Программирование. Принципы и практика использования C++ Исправленное издание, стр. 405
A.2.3. Булевы литералы
Литералами типа
booltruefalsetrue1false0A.2.4. Символьные литералы
Символьный литерал (character literal) — это символ, заключенный в одинарные кавычки, например
'a''@'
Специальный символ представляется с помощью имени в языке C++, заключенного в одинарные кавычки, например
'\n''\t'Набор символов содержит следующие видимые символы:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
!@#$%^&*()_+|~`{}[]:";'<>?,./
В переносимом коде нельзя рассчитывать на дополнительные видимые символы. Значение символа, например
'a'acout << int('a')A.2.5. Строковые литералы
Строковый литерал (string literal) — это последовательность символов, заключенных в двойные кавычки, например
"Knuth""King Canute"\n"KingCanute" // ошибка: переход на новую строку в строковом литерале"King\nCanute" // OK: правильный переход на новую строкуДва строковых литерала, разделенных только одним пробелом, считаются одним строковым литералом. Рассмотрим пример.
"
King" "Canute" // эквивалентно "KingCanute" (без пробела)Обратите внимание на то, что специальные символы, такие как
\nA.2.6. Указательные литералы
Существует только один указательный литерал (pointer literal): нулевой указатель (
00t* p1 = 0; // OK: нулевой указательint* p2 = 2–2; // OK: нулевой указательint* p3 = 1; // ошибка: 1 — int, а не указательint z = 0;int* p4 = z; // ошибка: z — не константаВ данном случае значение
00В языке C++ (но не в языке C, поэтому будьте осторожны с заголовками языка C) литерал
NULL0int* p4 = NULL; // ( при правильном определении литерала NULL) // нулевой указательВ языке C++0x нулевой указатель будет обозначаться ключевым словом
nullptr0A.3. Идентификаторы
Идентификатор (identifier) — это последовательность символов, начинающаяся с буквы или знака подчеркивания, за которыми следуют (или не следуют) буквы, цифры или знаки подчеркивания (в верхнем или нижнем регистре).
int foo_bar; // OKint FooBar; // OKint foo bar; // ошибка: пробел не может использоваться // в идентификатореint foo$bar; // ошибка: символ $ не может использоваться // в идентификатореИдентификаторы, начинающиеся со знака подчеркивания или содержащие двойной символ подчеркивания, резервируются для использования компилятором; не используйте их. Рассмотрим пример.
int _foo; // не рекомендуемint foo_bar; // OKint foo__bar; // не рекомендуемint foo_; // OKA.3.1. Указательные литералы
Ключевые слова (keywords) — это идентификаторы, используемые самим языком для выражения языковых конструкций.

A.4. Область видимости, класс памяти и время жизни
Каждое имя в языке C++ (за исключением имен препроцессора; см. раздел A.17) имеет определенную область видимости (scope); иначе говоря, существует область текста, в которой его можно использовать. Данные (объекты) хранятся в памяти; вид памяти, используемой для хранения объекта, называется классом памяти (storage class). Время жизни (lifetime) объекта отсчитывается от момента его инициализации до момента окончательного уничтожения.
A.4.1. Область видимости
Существует пять видов областей видимости (см. раздел 8.4).
• Глобальная область видимости (global scope). Имя находится в глобальной области видимости, если оно объявлено вне языковой конструкции (например, вне класса или функции).
• Область видимости пространства имен (namespace scope). Имя находится в области видимости пространства имен, если оно определено в пространстве имен и вне какой-либо языковой конструкции (например, вне класса и функции). Формально говоря, глобальная область видимости — это область видимости пространства имен с “пустым именем”.