typedef struct AA { int b1:5; int b2:2; }AA;

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;
}
对于如下的定义,b1占用的是一个int的低5位,b2占用的是接着的2位。
对于32位系统,int是32位,即4字节,由于vc默认是4字节对齐,所以剩下的位也不会分配给其他变量,所以sizeof(AA)=sizeof(int)=4
b1和b2分别占5位和2位,经过strcpy和memcpy后,aa的4个字节所存放的值是:0,1,2,3的ASCII码,即00110000,00110001,00110010,00110011
所以,最后一步,显示的是这4个字节的前5位和之后的2位,分别是:10000和01
因为Int有正负之分,所以,答案是   -16和1
typedef struct  AA 

int b1:5; 
int b2:2; 
}AA; 

对于如下的定义,sizeof(BB)=sizeof(int)+sizeof(int),对于32位系统,则为8
typedef struct  BB

int b1; 
int b2; 
}BB;
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值