Я просто наткнулся на этот простой фрагмент кода и задаюсь вопросом, почему вывод этой программы при компиляции компилятором 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 предпочитает глобальные переменные по локальным. Правильно?