Литеральный символ, такой как 'a'
, будет рассматриваться как целочисленный литерал, такой как 97
или 0x61
. C, как правило, хотят, чтобы каждое целое число сохранялось в int
, если не указано иное, поэтому sizeof('a')
, вероятно, будет sizeof(int)
.
Вы должны заметить, что значение 'a'
меньше 127, поэтому его можно хранить в символе (который имеет максимальное значение 127 или 255 в зависимости от того, подписан он или нет в вашем компиляторе) , Это то же самое, как быть в состоянии:
unsigned long long x = 0;
unsigned int y = x;
y
назначается из x
, тип которого больше, чем y
«s типа, но x
» значение s хорошо в тех, которые y
могут представлять собой, поэтому нет данных теряется, когда верхние биты (все 0s) отрубаются.
Каково значение ASCII 'a' для двух байтов? ASCII - это 7-битный стандарт кодирования символов. – dandan78
Не понимаю. ASCII - это набор из 128 символов, поэтому 7 бит должны быть достаточными для представления всех символов ASCII. – Benoit
Но размер символьной константы составляет 2 байта или 4 байта ... так как можно сохранить его в 1 байтовой переменной? – Parikshita