以下是引用我不是郭靖在2006-10-19 21:58:07的发言:
有什么问题?
VC缺省情况下是按 #pragma pack(4)执行的
如果是这样的话,
typedef struct {
char a;
} cc;
main () {
cc d;
printf("%d\n",sizeof(d));
}
这个结果的答案是1,而不是4哦
原来这个世界还有好多真理!
有什么问题?
VC缺省情况下是按 #pragma pack(4)执行的
如果是这样的话,
typedef struct {
char a;
} cc;
main () {
cc d;
printf("%d\n",sizeof(d));
}
这个结果的答案是1,而不是4哦
如果是这样的话,
typedef struct {
char a;
} cc;
main () {
cc d;
printf("%d\n",sizeof(d));
}
这个结果的答案是1,而不是4哦
我的妈咪呀! 为什么以前用是4的.
以下只是我的猜测。
终于明白了为什么以前看到的总是以4位对齐,
因为以前的总是大于4位的。
typedef struct {
char a;
} cc;
main () {
cc d;
printf("%d\n",sizeof(d));
}
的的确是1。
没超过4位,不会按4位对齐。
typedef struct {
int b;
char a;
} cc;
main () {
cc d;
printf("%d\n",sizeof(d));
}
就是8啦。
因为它已经超过4位, 按照标准它是5,
5位按4位对齐,那就是8啦。