20 // десятичная форма
024 // восьмеричная форма
0x14 // шестнадцатеричная форма
Тип целочисленного литерала зависит от его значения и формы. По умолчанию десятичные литералы считаются знаковыми, а восьмеричные и шестнадцатеричные литералы могут быть знаковыми или беззнаковыми. Для десятичного литерала принимается наименьший тип, int
, long
, или long long
, подходящий для его значения (т.е. первый подходящий в этом списке). Для восьмеричных и шестнадцатеричных литералов принимается наименьший тип, int
, unsigned int
, long
, unsigned long
, long long
или unsigned long long
, подходящий для значения литерала. Не следует использовать литерал, значение которого слишком велико для наибольшего соответствующего типа. Нет литералов типа short
. Как можно заметить в табл. 2.2, значения по умолчанию можно переопределить при помощи суффикса.
Хотя целочисленные литералы могут иметь знаковый тип, с технической точки зрения значение десятичного литерала никогда не бывает отрицательным числом. Если написать нечто, выглядящее как отрицательный десятичный литерал, например -42
, то знак "минус"
Литералы с плавающей запятой включают либо десятичную точку, либо экспоненту, определенную при помощи экспоненциального представления. Экспонента в экспоненциальном представлении обозначается символом E
или е
:
3.14159 3.14159Е0 0. 0e0 .001
По умолчанию литералы с плавающей запятой имеют тип double
. Используя представленные в табл. 2.2 суффиксы, тип умолчанию можно переопределить.
Символ, заключенный в одинарные кавычки, является литералом типа char
. Несколько символов, заключенных в парные кавычки, являются строковым литералом:
'a' //
"Hello World!" //
Типом строкового литерала является массив константных символов. Этот тип обсуждается в разделе 3.5.4. К каждому строковому литералу компилятор добавляет '\0'
). Таким образом, реальная величина строкового литерала на единицу больше его видимого размера. Например, литерал 'A'
представляет один символ А, тогда как строковый литерал "А"
представляет массив из двух символов, символа А и нулевого символа.
Два строковых литерала, разделенных пробелами, табуляцией или символом новой строки, конкатенируются в единый литерал. Такую форму литерала используют, если необходимо написать слишком длинный текст, который неудобно располагать в одной строке.
//
std::cout << "a really, really long string literal "
"that spans two lines" << std::endl;
У некоторых символов, таких как возврат на один символ или управляющий символ, нет видимого изображения. Такие символы называют
В языке С++ определены следующие управляющие последовательности.
Новая строка (newline) | \n | Горизонтальная табуляция (horizontal tab) | \t | Оповещение, звонок (alert) | \a |
Вертикальная табуляция (vertical tab) | \v | Возврат на один символ (backspace) | \b | Двойная кавычка (double quote) | \" |
Наклонная черта влево (backslash) | \\ | Вопросительный знак (question mark) | \? | Одинарная кавычка (single quote) | \' |
Возврат каретки (carriage return) | \r | Прогон страницы (formfeed) | \f |
Управляющую последовательность используют как единый символ:
std::cout << '\n'; //
std::cout << "\tHi!\n"; //
// текст "Hi!" и новую строка