第1个回答 2013-11-06
楼主你好!
我又来了.
struct s4
{
int i: 8;
int j: 4;
int a:3;
double b;
};
我来说下计算过程吧.首先位域i占8位,也就是一个字节.位域j占4位,位域a占3位,由于4+3<8,所以位域j跟位域a处于同一字节内,共占一个字节.到此为止.i,j,a共占2个字节.下面存入double b,由于sizeof(double)=8,也就是说double类型占8个字节,按照VC的变量对齐方式,b相对于起始地址的偏移量要是8的倍数.所以b从第8个字节开始存放.占8个字节.至于前面的字节,(第3个字节到第7个字节)VC自动填入毫无意义的数据.
所以结果等于16.
另外提醒一下楼主.sizeof()是计算字节,不是计算位.本回答被网友采纳