sizeof ('z') неожиданный результат

Возможный дубликат:
Размер символа ('a' ) в C / C ++

Почему эта программа выводит 4, а не 1?

void main()
{
   printf("%d",int(sizeof('z')));
}

'z' - это символ, а sizeof('z') должен выводить 1?


person pavun_cool    schedule 28.05.2011    source источник
comment
Подсказка: char ch = 'z'; printf("%d", sizeof ch);   -  person    schedule 28.05.2011
comment
@tjm Думаю, что это - хорошая находка. (И проголосовали).   -  person    schedule 28.05.2011
comment
Что там говорится о бесполезности поисковой системы SO? Я знаю, что у меня есть надежный ответ на этот вопрос, но я все еще не могу его найти!   -  person    schedule 28.05.2011
comment
На самом деле обманчивый ответ принадлежит мне! Но я не мог его найти.   -  person    schedule 28.05.2011
comment
@Neil, я не знаю о поиске SO, но он появляется как первый результат, если вы google c sizeof character   -  person tjm    schedule 28.05.2011
comment
@tjm для меня статья в Википедии появляется первой. Но все же - наконец-то анонимная слава!   -  person    schedule 28.05.2011
comment
-1 void main RAAAAAAAAARRRRRRRRRGGGGGGGGGHHHHHHHHH   -  person pmg    schedule 29.05.2011


Ответы (2)


'z' - это символьный литерал, а в C символьный литерал имеет тип int. Итак, sizeof('z') равно sizeof(int) в вашей реализации.

person Prasoon Saurav    schedule 28.05.2011

Sizeof char.

Возможно, удивительно, что символьные константы в C имеют тип int, поэтому sizeof('a') равно sizeof(int)

person cnicutar    schedule 28.05.2011