2015-12-23 5 views
5
char c = 'A'; 
printf("%d\n",sizeof(c));// output = 1 
printf("%d\n",sizeof('A')); // output = 4 

Почему оператор sizeof дает разные выходные данные для одного и того же символа? Пожалуйста, помогитеПонимание оператора sizeof в C

+0

Потому что у «А» нет типа. Он интерпретируется как 'int'. –

+2

@DavidHoelzer у него есть тип, а тип 'int' –

+0

достаточно честный. Так как «A» никак не отличается, это определение «int» по определению. Я больше сосредоточился на том, что было различие в том, как они были определены. Благодаря! –

ответ

6

c является переменной типа char; его размер составляет 1 байт.

'A' - int буквально - не спрашивайте меня, почему стандарт говорит об этом. Его размер составляет 4 байта на вашей платформе (то же, что и sizeof(1)).

+0

В прежние времена люди использовали многобайтовые символы, такие как «ху». В коде UNIX PDP11 было много всего. В основном они уходили, когда они портировали C на бигэндианские машины. C++ фиксировал это ... символьные константы - это символы. Это один из немногих способов, в которых C не является надлежащим подмножеством C++. –

Смежные вопросы