结构体的存储方式存在内存对齐问题,在本文中不展开讨论,本文主要想说明两个问题,第一个是位域的赋值问题;还有一个就是数据的表达形式。
好了,现在我们先讨论一下位域的赋值问题;现假设有如下结构体
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};
结果如下: