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(xa) + sizeof(xb)
),但是C的输出不是。 那么, sizeof
如何在C中工作呢?
- C: https : //ideone.com/zj5Qd2
- C ++: https : //ideone.com/ZZ4v6S
似乎C比本地更喜欢全局variables。 这样对吗?
在C中,像struct x { int a; int b; };
struct x { int a; int b; };
没有定义typesx
,它定义了一个typesstruct x
。 所以,如果你删除int x;
全球,你会发现C版本不能编译。