我刚刚遇到这个简单的代码片段,并且想知道为什么当C编译器编译时该程序的输出是4
,并且当它由C ++编译时是{{ {1}}。
8
C ++输出是理性的(#include <stdio.h>
int x;
int main(){
struct x {int a; int b;};
printf("%d", sizeof(x));
return 0;
}
),但C的输出不是。那么,8 = 4 + 4 = sizeof(x.a) + sizeof(x.b)
如何在C中工作?
似乎C更喜欢全局变量而不是本地变量。是不是?
答案 0 :(得分:77)
在C中,像struct x { int a; int b; };
这样的结构定义没有定义类型x
,它定义了类型struct x
。因此,如果删除int x;
全局,则会发现C版本无法编译。