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

还是sizeof有关问题

2012-02-29 
还是sizeof问题typedefstructA{chart:4chark:4unsignedshorti:8unsignedlongmintb1:5intb2:2//eg:这

还是sizeof问题
typedef   struct   A
{
                  char   t:4;
                  char   k:4;
                  unsigned   short   i:8;
                  unsigned   long   m;
                  int   b1:5;
                  int   b2:2;     //eg:这行删除不删除,运行都是12                    
}A;
运行结果乱七八糟的,
如果说只有
typedef   struct   A
{
                  char   t:4;
                  char   k:4;
                  unsigned   short   i:8;
                  unsigned   long   m;
}A                             //结果是8,没错
但是
typedef   struct   A
{
                  int   b1:5;
                  int   b2:2;
}A                 //结果是4,奇怪,int不是4byte么?

或者
typedef   struct   A
{
                  int   b1:5;
                  int   b2:2;
                  char   c:33;
}A           //结果是12,个人觉得是4+4+1=9?有没有问题


[解决办法]
刚刚在gcc上调了一下,gcc是四字节对齐.
char t:4; \
char k:4; / 1B
unsigned short i:8; 1B
加2B的对齐
unsigned long m; 4B
正好8B.

typedef struct A
{
int b1:5;
int b2:2;
char c:33;
}A
这个b1+b2=int=4B,
c = 5char = 5B
+3B的对齐,正好12B.

丢人,回答问题就不该这么急.
[解决办法]
you can scan http://blog.csdn.net/wanfustudio size详解

热点排行