Code 1
#include <stdio.h>
int T;
int main()
{
struct T{ double x;};
printf("%d", sizeof(T));
return 0;
}
Code 2
#include <stdio.h>
struct T{ double x;};
int main()
{
int T;
printf("%d", sizeof(T));
return 0;
}
Выход: 4
Для code 1
я считаю, что выход размер глобальной переменной (int T
), поэтому он дает 4.
Но для code 2
он дает выход 4 в соответствии с глобальной логикой переменных, он должен выводиться 8 для struct T{ double x;};
.
Здесь понятие глобальной переменной неверно - я думаю.
Может кто-нибудь объяснить это, почему результат выглядит?
С typedef для 'T', не было бы ошибки компилятора. Эти два имени будут находиться в разных (вложенных) областях; внутреннее имя будет использоваться в операторе 'printf()' (с оператором 'sizeof'). –