.123 // double: 0.123
0.123 // double
1.23e3 // double: 1230.0
1.23e–3 // double: 0.00123
1.23e+3 // double: 1230.0
Литералы с плавающей точкой имеют тип double
, если суффикс не означает иное. Рассмотрим примеры.
1.23 // double
1.23f // float
1.23L // long double
Литералами типа bool
являются литералы true
и false
. Целочисленное значение литерала true
равно 1
, а литерала false
— 0
.
'a'
или '@'
. Кроме того, существует несколько специальных символов.
Специальный символ представляется с помощью имени в языке C++, заключенного в одинарные кавычки, например '\n'
(новая строка) и '\t'
(табуляция).
Набор символов содержит следующие видимые символы:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
!@#$%^&*()_+|~`{}[]:";'<>?,./
В переносимом коде нельзя рассчитывать на дополнительные видимые символы. Значение символа, например 'a'
для буквы a
, зависит от реализации (но его легко выяснить, например, выполнив инструкцию, cout << int('a')
).
"Knuth"
и "King Canute"
. Строковый литерал нельзя произвольно разбивать на несколько строк; для перехода на новую строку используется специальный символ \n
.
"King
Canute" // ошибка: переход на новую строку в строковом литерале
"King\nCanute" // OK: правильный переход на новую строку
Два строковых литерала, разделенных только одним пробелом, считаются одним строковым литералом. Рассмотрим пример.
"King" "Canute" // эквивалентно "KingCanute" (без пробела)
Обратите внимание на то, что специальные символы, такие как \n
, могут входить в строковые литералы.
Существует только один 0
). В качестве нулевого указателя можно использовать любое константное выражение, равное 0
.
t* p1 = 0; // OK: нулевой указатель
int* p2 = 2–2; // OK: нулевой указатель
int* p3 = 1; // ошибка: 1 — int, а не указатель
int z = 0;
int* p4 = z; // ошибка: z — не константа
В данном случае значение 0
неявно превращается в нулевой указатель. Как правило (но не всегда), нулевой указатель представляется в виде битовой маски, состоящей из одних нулей, как и число 0
.
В языке C++ (но не в языке C, поэтому будьте осторожны с заголовками языка C) литерал NULL
по определению равен 0
, поэтому можно написать следующий код:
int* p4 = NULL; // ( при правильном определении литерала NULL)
// нулевой указатель
В языке C++0x нулевой указатель будет обозначаться ключевым словом nullptr
. А пока рекомендуем использовать для этого число 0
.
int foo_bar; // OK
int FooBar; // OK
int foo bar; // ошибка: пробел не может использоваться
// в идентификаторе
int foo$bar; // ошибка: символ $ не может использоваться
// в идентификаторе
Идентификаторы, начинающиеся со знака подчеркивания или содержащие двойной символ подчеркивания, резервируются для использования компилятором; не используйте их. Рассмотрим пример.
int _foo; // не рекомендуем
int foo_bar; // OK
int foo__bar; // не рекомендуем
int foo_; // OK