char c = 'A';
printf("%d\n",sizeof(c));// output = 1
printf("%d\n",sizeof('A')); // output = 4
Почему оператор sizeof
дает разные выходные данные для одного и того же символа? Пожалуйста, помогитеПонимание оператора sizeof в C
char c = 'A';
printf("%d\n",sizeof(c));// output = 1
printf("%d\n",sizeof('A')); // output = 4
Почему оператор sizeof
дает разные выходные данные для одного и того же символа? Пожалуйста, помогитеПонимание оператора sizeof в C
c
является переменной типа char
; его размер составляет 1 байт.
'A'
- int
буквально - не спрашивайте меня, почему стандарт говорит об этом. Его размер составляет 4 байта на вашей платформе (то же, что и sizeof(1)
).
В прежние времена люди использовали многобайтовые символы, такие как «ху». В коде UNIX PDP11 было много всего. В основном они уходили, когда они портировали C на бигэндианские машины. C++ фиксировал это ... символьные константы - это символы. Это один из немногих способов, в которых C не является надлежащим подмножеством C++. –
Потому что у «А» нет типа. Он интерпретируется как 'int'. –
@DavidHoelzer у него есть тип, а тип 'int' –
достаточно честный. Так как «A» никак не отличается, это определение «int» по определению. Я больше сосредоточился на том, что было различие в том, как они были определены. Благодаря! –