结构体的存储方式存在内存对齐问题,在本文中不展开讨论,本文主要想说明两个问题,第一个是位域的赋值问题;还有一个就是数据的表达形式。
好了,现在我们先讨论一下位域的赋值问题;现假设有如下结构体
struct byte
{
int one:2;
int two:1;
};
首先我们知道,one和two存储在同一个字节中,所以我们本能的以为语句
struct byte we={7};
会将one的两bit置为11,而把two的一位置为1;但是在实际的结果如下:
由此可知,这样做并没有将two赋值成功;下面这句能够成功赋值
struct byte we={3,1};
结果如下:

本文探讨C++中结构体位域的赋值问题,通过实例解析为何直接赋值可能导致位域赋值失败,并解释了高位补齐原理,帮助理解位域赋值后的显示结果。
4237

被折叠的 条评论
为什么被折叠?



