帮忙解析下面程序的输出#include<iostream.h>
#include <string.h>
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct  AA
{
        int b1:5;
        int b2:2;
}AA;
void main()
{
       AA aa;
       char cc[100];
       strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz");
       memcpy(&aa,cc,sizeof(AA));
       cout << aa.b1 <<endl;
       cout << aa.b2 <<endl;
}

解决方案 »

  1.   

    =======================================
    输出: 
    -16
    1首先sizeof(AA)的大小为4,b1和b2分别占5bit和2bit.
    经过strcpy和memcpy后,aa的4个字节所存放的值是:
    0,1,2,3的ASC码,即00110000,00110001,00110010,00110011
    所以,最后一步:显示的是这4个字节的前5位,和之后的2位
    分别为:10000,和01
    因为int是有正负之分  所以是-16和1