【发布时间】:2011-04-29 18:35:02
【问题描述】:
可能重复:
Why isn't sizeof for a struct equal to the sum of sizeof of each member?
#include <stdio.h>
int main(){
struct word1{
char a;
int b;
char c;
};
struct word2{
char a;
char b;
int c;
};
printf("%d\t%d\n", sizeof(int), sizeof(char)); //Output : 4 1
printf("%d\t%d\n", sizeof(struct word1), sizeof(struct word2)); //Output: 12 8
return 0;
}
代码可在IDEONE获取。
为什么 struct 1 (word1) 的 size 大于 struct 2 (word2) 的 size?
这是编译器问题吗?
【问题讨论】:
-
不要使用 '
void main()' 并期望不会大喊大叫 -main()的正确返回类型是int。 -
有一天有人会声称返回 void 而不是 int 会导致核熔毁或其他原因。
-
好的,下次我会处理这个的。
-
@Crashworks:也许,但不是我。这意味着没有可靠的值返回给环境,所以如果程序 A 依赖于程序 B 的退出状态,那么如果 B 没有返回值,A 将从 B 收到什么值是不确定的。现在,如果这些程序靠近核电站,人们会假设代码审查、测试和编码标准都确保不会发生灾难。如果初学者学会从 main() 中返回一个值,这有助于他们准备好在比课堂练习更苛刻的环境中工作。最终,他们应该阅读 C 标准,但还没有。
-
一定是 Stack Overflow 上重复最多的主题问题之一。