C++ std::cout печатает странные символы, когда я заключаю строку в одинарные кавычки

когда я попробовал std::cout << ', ';, я получил 11296, я знаю, что должен был заключить его в ", ", но почему я получаю число?


person demalegabi    schedule 31.07.2015    source источник
comment
Это не скобки.   -  person Lightness Races in Orbit    schedule 31.07.2015


Ответы (2)


Вы получили два символа в одинарных кавычках (запятая и пробел).
Значение таких многосимвольных литералов зависит от вашего компилятора и т. д.

В этом случае значения ASCII равны 44 и 32, а

11296 = 44 * 256 + 32  

т.е. оба байта вместе понимаются как 16-битное целое число

person deviantfan    schedule 31.07.2015

Согласно стандарту (N4296, 2.13.3 Символьные литералы, выделено мной):

Обычный символьный литерал, содержащий более одного c-char, является многосимвольным литералом. Многосимвольный литерал или обычный символьный литерал, содержащий один c-char, не представленный в наборе символов выполнения, поддерживается условно, имеет тип int и значение, определяемое реализацией< /сильный>.

"Поддерживается условно" (1.3.5).

программная конструкция, для поддержки которой реализация не требуется

person AlexD    schedule 31.07.2015