C的struct内存对齐的问题(二)

#include <stdio.h>
#include <iostream.h>

int main(void)
{
    typedef struct{
            unsigned short a:8;
            unsigned short b:9;
            unsigned short c:10;
        }T_struct1;
        typedef struct{
            unsigned short a:2;
            unsigned short b:10;
            unsigned short c:4;
            unsigned short d:10;
            unsigned short e:6;
        }T_struct2;

        typedef struct{
            unsigned short a:2;
            unsigned short b:10;
            unsigned short c:10;
            unsigned short d:4;
            unsigned short e:6;
        }T_struct3;

        cout<<sizeof(T_struct1)<<endl;
        cout<<sizeof(T_struct2)<<endl;
        cout<<sizeof(T_struct3)<<endl;
    
    return 0;
}

执行的结果是:
6
4
6
解释:
struct中unsigned short为16bit,2字节宽。
对T_struct1,占据的内存为:2(只用了8bit)+2(只用了9bit)+2(只用了10bit)
对T_struct2,占据的内存为:2((2+10+2)bit)+2((10+6)bit)
对T_struct3,占据的内存为:2((2+10)bit)+2((10+4)bit)+2(6bit)

posted on 2009-08-25 10:53  vincenzo.lai  阅读(381)  评论(0)    收藏  举报

导航