读书人

还是sizeof有关问题

发布时间: 2012-02-29 16:44:11 作者: rapoo

还是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详解

读书人网 >C++

热点推荐