C 与 C++
C vs C++ sizeof
我刚看到这个简单的代码片段,我想知道为什么这个程序由 C 编译器编译时的输出是 4
,而当它由 C++ 编译时输出是 8
。
#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 的输出不是。那么,sizeof
在 C 中如何工作?
似乎 C 更喜欢全局变量而不是局部变量。对吗?
在C中,像struct x { int a; int b; };
这样的结构体定义没有定义类型x
,它定义了类型struct x
。所以如果你删除 int x;
全局,你会发现 C 版本无法编译。
我刚看到这个简单的代码片段,我想知道为什么这个程序由 C 编译器编译时的输出是 4
,而当它由 C++ 编译时输出是 8
。
#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 的输出不是。那么,sizeof
在 C 中如何工作?
似乎 C 更喜欢全局变量而不是局部变量。对吗?
在C中,像struct x { int a; int b; };
这样的结构体定义没有定义类型x
,它定义了类型struct x
。所以如果你删除 int x;
全局,你会发现 C 版本无法编译。