Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Cpp_Страуструп.doc
Скачиваний:
20
Добавлен:
03.05.2015
Размер:
3.2 Mб
Скачать

2.4 Литералы

В С++ можно задавать значения всех основных типов:

символьные константы, целые константы и константы с плавающей точкой.

Кроме того, нуль (0) можно использовать как значение указателя

произвольного типа, а символьные строки являются константами типа

char[]. Есть возможность определить символические константы.

Символическая константа - это имя, значение которого в его области

видимости изменять нельзя. В С++ символические константы можно задать

тремя способами: (1) добавив служебное слово const в определении,

можно связать с именем любое значение произвольного типа;

(2) множество целых констант можно определить как перечисление;

(3) константой является имя массива или функции.

2.4.1 Целые константы

Целые константы могут появляться в четырех обличьях: десятичные,

восьмеричные, шестнадцатеричные и символьные константы. Десятичные

константы используются чаще всего и выглядят естественно:

0 1234 976 12345678901234567890

Десятичная константа имеет тип int, если она умещается в память,

отводимую для int, в противном случае ее тип long. Транслятор должен

предупреждать о константах, величина которых превышает выбранный формат

представления чисел.

Константа, начинающаяся с нуля, за которым следует x (0x), является

шестнадцатеричным числом (с основанием 16), а константа, которая

начинающаяся с нуля, за которым следует цифра, является восьмеричным

числом (с основанием 8). Приведем примеры восьмеричных констант:

0 02 077 0123

Их десятичные эквиваленты равны соответственно: 0, 2, 63, 83.

В шестнадцатеричной записи эти константы выглядят так:

0x0 0x2 0x3f 0x53

Буквы a, b, c, d, e и f или эквивалентные им заглавные буквы

используются для представления чисел 10, 11, 12, 13, 14 и 15,

соответственно. Восьмеричная и шестнадцатеричная формы записи наиболее

подходят для задания набора разрядов, а

использование их для обычных чисел может дать неожиданный эффект.

Например, на машине, в которой int представляется как 16-разрядное

число в дополнительном коде, 0xffff есть отрицательное десятичное

число -1. Если бы для представления целого использовалось большее число

разрядов, то это было бы числом 65535.

Окончание U может использоваться для явного задания констант типа

unsigned. Аналогично, окончание L явно задает константу типа long.

Например:

void f(int);

void f(unsigned int);

void f(long int);

void g()

{

f(3); // вызов f(int)

f(3U); // вызов f(unsigned int)

f(3L); // вызов f(long int)

}

2.4.2 Константы с плавающей точкой

Константы с плавающей точкой имеют тип double. Транслятор должен

предупреждать о таких константах, значение которых не укладывается в

формат, выбранный для представления чисел с плавающей точкой. Приведем

примеры констант с плавающей точкой:

1.23 .23 0.23 1. 1.0 1.2e10 1.23e-15

Отметим, что внутри константы с плавающей точкой не должно быть пробелов.

Например, 65.43 e-21 не является константой с плавающей точкой, транслятор

распознает это как четыре отдельные лексемы:

65.43 e - 21

что вызовет синтаксическую ошибку.

Если нужна константа с плавающей точкой типа float, то ее можно получить,

используя окончание f:

3.14159265f 2.0f 2.997925f

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]