Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

Двоичная система основана на базе счисления, равной двум. В этой системе есть только две цифры: 0 и 1. В языке С++ невозможно непосредственно представить двоичные числа как литералы. В качестве литералов и формата ввода-вывода в языке С++ непосредственно поддерживаются только восьмеричные, десятичные и шестнадцатеричные числа. Однако двоичные числа полезно знать, даже если мы не можем явно представить их в тексте программы. Например, десятичное число 123 равно 1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2+1, т.е. 1*64+1*32+1*16+1*8+0*4+1*2+1, т.е. (в двоичном виде) 1111011.

<p id="AutBody_Root575"><strong>A.2.2. Литералы с плавающей точкой</strong></p>

Литералы с плавающей точкой (floating-point-literal) содержат десятичную точку (.), показатель степени (например, e3) или суффикс, обозначающий число с плавающей точкой (d или f). Рассмотрим примеры.

123     // int (нет десятичной точки, суффикса или показателя степени)

123.    // double: 123.0

123.0   // double

.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

<p id="AutBody_Root576"><strong>A.2.3. Булевы литералы</strong></p>

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

<p id="AutBody_Root577"><strong>A.2.4. Символьные литералы</strong></p>

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

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

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

abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZ

0123456789

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

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

<p id="AutBody_Root578"><strong>A.2.5. Строковые литералы</strong></p>

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

"King

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

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

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

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

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

<p id="AutBody_Root579"><strong>A.2.6. Указательные литералы</strong></p>

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

<p id="AutBody_Root580"><strong>A.3. Идентификаторы</strong></p>
Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT