C vs C ++ sizeof

时间:2016-01-07 19:16:31

标签: c++ c sizeof

我刚刚遇到这个简单的代码片段,并且想知道为什么当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更喜欢全局变量而不是本地变量。是不是?

1 个答案:

答案 0 :(得分:77)

在C中,像struct x { int a; int b; };这样的结构定义没有定义类型x,它定义了类型struct x。因此,如果删除int x;全局,则会发现C版本无法编译。