Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Максимов_электронный_учебник_текст.doc
Скачиваний:
42
Добавлен:
01.06.2015
Размер:
3.24 Mб
Скачать

2.4. Константы

Константа– это лексема, представляющая изображение фиксированного числового, строкового или символьного значения.

Константы бывают нескольких групп: целые, вещественные (с плавающей точкой), перечислимые, символьные и строковые.

Компилятор при анализе текста программы определяет по «внешнему виду» и числовому значению, к какой группе относится константа.

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

Десятичная целая константа определена как последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль. Для компиляторов BC++ версии 3.11 диапазон допустимых целых положительных значений от 0 до 4294967295. Константы, превышающие указанное максимальное значение, вызывают ошибку на этапе компиляции. Отрицательные константы – это константы без знака, к которым применена операция изменения знака. Абсолютное значение отрицательных десятичных констант для BC++ 3.11 не должно превышать 2147483647.

В табл. 2.2 приведены типы, выбираемые компилятором по умолчанию на основании значения констант. То есть, например, если константа лежит в диапазоне от 0 до 32767, то для неё по умолчанию будет выбран тип int.

Таблица 2.2

Типы, выбираемые компилятором по умолчанию для целых констант

Тип данных

Диапазон значений констант

Десятичные

Восьмеричные

Шестнадцатеричные

int

0 …32767

00…077777

0х0000…0х7fff

unsigned int

-

0100000…0177777

0х8000…0хffff

long

32768…

2147483647

0200000…

017777777777

0х10000…

0х7fffffff

unsigned long

2147483647…

4294967295

020000000000…

037777777777

0х80000000…

0хffffffff

Ошибка

>4294967295

>037777777777

>0хffffffff

Восьмеричные целые константы начинаются всегда с нуля. Если в записи восьмеричной константы встретится недопустимая цифра 8 или 9, то это воспринимается как ошибка. Диапазон допустимых значений для положительных восьмеричных констант от 00 до 037777777777. Для отрицательных восьмеричных констант значение не должно превышать 020000000000.

Последовательность шестнадцатеричных цифр, которой предшествует 0x, считается шестнадцатеричной константой. В шестнадцатеричные цифры кроме десятичных входят латинские буквы от a (или A) до f (или F). Диапазон допустимых значений для положительных шестнадцатеричных констант от 0х0 до 0хffffffff. Для отрицательных шестнадцатеричных констант значение не должно превышать 0х80000000.

Если программиста по каким-то причинам не устраивает тип данных присваиваемый компилятором по умолчанию константе, то он может изменить тип с помощью суффикса L, l (long) и U, u (unsigned) или их сочетания ul, UL (unsigned long).

Примеры различных вариантов записи целой константы  единица.

1, 01, 0x1; /* десятичная, восьмеричная и шестнадцатеричная единицы по умолчанию в соответствии с табл. 2.2 имеют тип int*/

1u, 01u, 0x1u; /*десятичная, восьмеричная и шестнадцатеричная единицы типа unsigned int*/

1L, 01L, 0х1L; /* десятичная, восьмеричная и шестнадцатеричная единицы типа long*/

1UL, 01UL, 0х1UL; /* десятичная, восьмеричная и шестнадцатеричная единицы типа unsigned long*/

Вещественные константы

Вещественная константа отличается от целой константы наличием десятичной точки или признаком экспоненты e (E). Именно по одному из этих признаков компилятор распознаёт вещественную константу. По умолчанию компилятор относит любую вещественную константу в не зависимости от её значения к типу double. С помощью суффиксов L (l) или F (f) тип вещественной константы можно определить явно как long double или float соответственно. Диапазон значений вещественных констант приведен в табл. 2.3