首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-22 
关于结构体空间的问题,大家进来讨论下了。。C/C++ codestruct bitfiled{unsigned short a:4unsigned short

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

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语言位域,相信你很容易理解的
[解决办法]
位域由具体实现决定

热点排行