以下是引用我不是郭靖在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哦

2006-10-19 22:16
2006-10-19 22:25
2006-10-19 22:49
如果是这样的话,
typedef struct {
char a;
} cc;
main () {
cc d;
printf("%d\n",sizeof(d));
}
这个结果的答案是1,而不是4哦
我的妈咪呀! 为什么以前用是4的.

2006-10-19 23:18

2006-10-19 23:20

2006-10-20 08:49
2006-10-20 08:51
2006-10-20 10:19

以下只是我的猜测。
终于明白了为什么以前看到的总是以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啦。

2006-10-20 10:35