关于结构体空间的问题,大家进来讨论下了。。
- C/C++ code
struct bitfiled{ unsigned short a:4; unsigned short b:5; unsigned short c:7;};int _tmain(int argc, _TCHAR* argv[]){ struct bitfiled test; short i; test.a = 2; test.b = 3; test.c = 0; i = *((short*)&test); cout<<i<<endl; getchar(); return 0;}请各位看看这个代码,关于这个结构体空间分配我很不理解。
test.a分配的是第一个字节的高四位,test.b分配的是第一个字节的第四位和第二个字节的高一位,剩下的给了test.c
请问为什么会有这种分配方式?是出于什么目的呢?
我的编译环境是VS2005...
大家一起讨论下了。。
[解决办法]
位域,为了节省空间嘛
[解决办法]
ushort 2字节,2*8=16位,4+5=9,9+7=16,恰好16位,一个ushort的2字节就存了三个变量,多省空间。
[解决办法]
[解决办法]
支持楼4
[解决办法]
不推荐用这种方法,这样没办法将内存对齐。
[解决办法]
楼主google一下 C语言位域,相信你很容易理解的
[解决办法]
位域由具体实现决定