Читаем Программирование полностью

.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

A.2.3. Булевы литералы

 Литералами типа bool являются литералы true и false. Целочисленное значение литерала true равно 1, а литерала false0.

A.2.4. Символьные литералы

Символьный литерал (character literal) — это символ, заключенный в одинарные кавычки, например 'a' или '@'. Кроме того, существует несколько специальных символов.



Специальный символ представляется с помощью имени в языке C++, заключенного в одинарные кавычки, например '\n' (новая строка) и '\t' (табуляция).

Набор символов содержит следующие видимые символы:


abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZ

0123456789

!@#$%^&*()_+|~`{}[]:";'<>?,./


В переносимом коде нельзя рассчитывать на дополнительные видимые символы. Значение символа, например 'a' для буквы a, зависит от реализации (но его легко выяснить, например, выполнив инструкцию, cout << int('a')).

A.2.5. Строковые литералы

Строковый литерал (string literal) — это последовательность символов, заключенных в двойные кавычки, например "Knuth" и "King Canute". Строковый литерал нельзя произвольно разбивать на несколько строк; для перехода на новую строку используется специальный символ \n.


"King

Canute"        // ошибка: переход на новую строку в строковом литерале

"King\nCanute" // OK: правильный переход на новую строку


Два строковых литерала, разделенных только одним пробелом, считаются одним строковым литералом. Рассмотрим пример.


"King" "Canute" // эквивалентно "KingCanute" (без пробела)


Обратите внимание на то, что специальные символы, такие как \n, могут входить в строковые литералы.

A.2.6. Указательные литералы

Существует только один указательный литерал (pointer literal): нулевой указатель (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.

A.3. Идентификаторы

Идентификатор (identifier) — это последовательность символов, начинающаяся с буквы или знака подчеркивания, за которыми следуют (или не следуют) буквы, цифры или знаки подчеркивания (в верхнем или нижнем регистре).


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

A.3.1. Указательные литералы

Ключевые слова (keywords) — это идентификаторы, используемые самим языком для выражения языковых конструкций.



A.4. Область видимости, класс памяти и время жизни

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже