关于定义位位字段的一点,疑惑.请大家指教我.
有点不明白:请您指教:
struct qq
{
int i:1;//如果int i : 100的话sizeof输出16个字节,这一点可以说的过去
};
qq kk;
kk.i=100;
cout < <kk.i < <endl;
cout < <sizeof(kk) < <endl;
既然为一个位了,怎么输出sizeof(kk)还是4呢?
[解决办法]
因为你只声明了一个变量i,计算机不能为任何数据类型只申请1个位,而qq作为结构必须符合数据对齐,而且前面声明的是int,所以只能把剩余的31位空间补上。
如果你这样写
struct qq
{
char i:1;
};
就是1个字节了。
[解决办法]
字节对齐
你可以到网上搜,很多资料