Я просто наткнулся на этот простой фрагмент кода и задаюсь вопросом, почему вывод этой программы при компиляции компилятором C составляет 4
, а когда он скомпилирован с помощью С++, это 8
.
#include <stdio.h>
int x;
int main(){
struct x {int a; int b;};
printf("%d", sizeof(x));
return 0;
}
Вывод С++ является рациональным (8 = 4 + 4 = sizeof(x.a) + sizeof(x.b)
), но вывод C не является. Итак, как работает sizeof
в C?
Кажется, что C предпочитает глобальные переменные по локальным. Правильно?