когда я попробовал std::cout << ', ';
, я получил 11296
, я знаю, что должен был заключить его в ", "
, но почему я получаю число?
C++ std::cout печатает странные символы, когда я заключаю строку в одинарные кавычки
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