读书人

关于定义位位字段的一点,疑惑.请大家指

发布时间: 2012-03-18 13:55:39 作者: rapoo

关于定义位位字段的一点,疑惑.请大家指教我.
有点不明白:请您指教:
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个字节了。
[解决办法]
字节对齐

你可以到网上搜,很多资料

读书人网 >C++

热点推荐