读书人

关于结构体空间的有关问题大家进来讨

发布时间: 2012-04-22 18:34:46 作者: rapoo

关于结构体空间的问题,大家进来讨论下了。。

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字节就存了三个变量,多省空间。
[解决办法]
探讨

可是为什么第一个test.a不直接分配给第一个字节的高四位呢?偏偏是低四位呢?上面说错了,把自己说乱了。这也是我不理解的地方了。。
引用:

位域,为了节省空间嘛

[解决办法]
支持楼4
[解决办法]
不推荐用这种方法,这样没办法将内存对齐。
[解决办法]
楼主google一下 C语言位域,相信你很容易理解的
[解决办法]
位域由具体实现决定

读书人网 >C语言

热点推荐