Может кто-нибудь объяснить это?
'AA'
- это многосимвольная символьная константа. Он имеет тип int
. Это значение определяется реализацией.
"Реализация" - это компилятор, и у вашего компилятора есть правила, которым сопоставлено int
значение 'AA'
. Отображение, кажется, легко. Потому что я не знаю ваш компилятор, я догадываюсь об этом. Чтобы быть уверенным, обратитесь к документации вашего компилятора.
'AA'
соответствует значению 'A' << 8 | 'A'
. Бит сдвинут 'A'
на байт с другим 'A'
. Ваша система, скорее всего, использует ASCII для представления символов. 'A'
отображается в ASCII на значение 65
в десятичном виде (0x41
в шестнадцатеричном). Вычисление 0x41 << 8 | 0x41
дает значение 16705
в десятичном виде. Поскольку это значение int
, вы можете использовать %d
для печати результата. Таким образом, ваш код эквивалентен printf("%d\n", 16705)
.