Если вы на 32 битного компилятора
printf("%d\t",sizeof(6.5));
6.5
является двойной, так sizeof(double)
дает 8
.
printf("%d\t",sizeof(90000));
90000
является Int (или длинный), поэтому sizeof(int)
дает 4
.
printf("%d\t";sizeof('a'));
^
you left a semicolon here, change it to a comma
'a'
преобразуется в целое, так sizeof(int)
дает 4
.
Так фактический выход
8 4 4
ideone link
Но, если вы на 16 битного компилятора, вы получите
sizeof(6.5)
= sizeof(double)
= 8
sizeof(90000)
= sizeof(long)
= 4
sizeof('a')
= sizeof(int)
= 2
Так что это объяснит ваш выход.
Какой выход вы ожидаете? –
Примечание [sizeof возвращает size_t, поэтому вы должны использовать% zu] (http://stackoverflow.com/a/21128106/1708801). –
Обратите внимание, что ваш код даже не компилируется, поскольку он заставляет меня думать, что это не ваш фактический код. Также я ожидал бы «8 4 1», если только ваш компилятор не поддерживает широкую поддержку символов. –