Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л_2_Лексические_основы_С++.doc
Скачиваний:
11
Добавлен:
04.11.2018
Размер:
582.66 Кб
Скачать

Константы

Константа – значение, не изменяемое при выполнении программы. В С++ используются константы следующих видов:

  • литералы,

  • именованные константы,

  • препроцессорные константы,

  • константы перечислений.

Литералы

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

В качестве литералов в С++ могут использоваться:

  • целые константы:

    • десятичные 33 44 -52 8 -461 0 2010

    • восьмеричные 0737 0152 -0121

    • шестнадцатеричные 0X2F56 0x15c -0x2а13b 0X7d83

  • вещественные константы 0.25 0.25f -56.12е-12

  • логические константы true false

  • символьные (литерные) константы ‘K’ ‘z’ ‘2’

  • строковые константы “the first number” “1234”

  • неопределенный указатель NULL

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

Целые константы записываются в виде десятичных (decimal), восьмеричных (octal) и 16-ричных (hexadecimal) целых чисел. Запись восьмеричного литерала начинается с цифры 0, а запись 16-ричного литерала начинается символами 0x (или 0Х). Буквы от A(a) до F(f) используются для записи значений от 10 до 15 в шестнадцатеричной системе счисления. Появление в записи восьмеричной константы недопустимой цифры 8 или 9 воспринимается как ошибка. Например, выполнение операторов:

int a=08;

cout << a << endl;

дает ошибку компиляции illegal digit '8' for base '8'

Выполнение операторов:

int a=010;

cout << a << endl;

дает в качестве результата значение 8.

Выполнение операторов:

int a=0x10;

cout << a << endl;

дает в качестве результата значение 16.

Выполнение операторов:

int b=0xa;

cout << b << endl;

дает в качестве результата значение 10.

Целые литералы могут быть:

  • длинными целыми (определяются суффиксом – буквой l или L – тип long, стоящей после константы, и занимают 4 байта). Например: 12L, -1234567890L, 1234567890l – длинная целая десятичная константа; 0525L – длинная целая восьмеричная константа; 0ХABCL – длинная целая шестнадцатеричная константа.

  • беззнаковыми целыми (явно определяются суффиксом – буквой u или U – тип unsigned, стоящей после константы, и занимают 4 байта). Например: 12U, 1245U или 1245u – беззнаковая целая десятичная константа; 525UL (или 525 LU, разрешается комбинировать оба суффикса в любом порядке) – беззнаковая длинная целая десятичная константа.

Константы в С++ изображаются без знака. Отрицательные константы получаются применением операции «унарный минус» к соответствующей положительной константе.

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

Литералы с плавающей точкой (вещественные константы) представляются числами с фиксированной или с плавающей точкой двойной точности (т.е. имеющими тип double – двойная точность), всегда в десятичной системе счисления. Для них возможно задание типа-суффикса: F или f – тип float – одинарная точность; L или l – тип long double – повышенная точность. При отсутствии суффикса подразумевается тип double.

Даже не отличаясь по значению от целых констант, константы с плавающей точкой имеют другую форму внутреннего представления в компьютере, требующую при операциях с такими константами использования арифметики с плавающей точкой.

Компилятор распознает вещественные константы по внешним признакам. Литералы с плавающей точкой могут включать:

целую часть – последовательность цифр;

десятичную точку;

дробную часть – последовательность цифр;

символ экспоненты e или E;

экспоненту в виде целой константы (может быть со знаком).

[(целая часть)] . [ (дробная часть) ] [e или E ± целая константа] [l или L или f или F]

Символы [ ] обозначают, что компонент может отсутствовать. Любая часть из нижеследующих пар (но не обе сразу) может быть пропущена: целая или дробная; десятичная точка или символ е (Е) и экспонента в виде целой константы.

Например:

456.73f 23.678 5F // 4 байта (тип float)

456.73 23.678 5 // 8 байтов (тип double по умолчанию)

15.75 .75 // 8 байтов (тип double по умолчанию)

1.575Е1 .0075е2 //15.75 0.75

1575е-2 -.125 //15.75 -0.125

-0.0025 -.175Е-2 //-0.0025 -0.00175

-2.5е-3 25е-4 //-0.0025 -0.0025

1298760.0 -0.5437634Е-6 0.1е9 //1298760.0 -0.0000005437634 0.100000000

12345678967.54675l 12345463754.9L // (тип long double)

12345f

Предельные значения констант разных типов доступны в программах с помощью стандартизованных препроцессорных констант заголовков <сlimits> или <limits.h>, <сfloat> или <float.h> (Таблицы 1.3, 1.4).

Таблица 1.3 Константы предельных значений диапазонов типов

<сlimits> или <limits.h>

CHAR_MIN CHAR_MAX

UCHAR_MAX

SHRT_MIN SHRT_MAX

USHRT_MAX

INT_MIN INT_MAX

UINT_MAX

<сfloat> или <float.h>

FLT_MIN FLT_MAX

DBL_MIN DBL_MAX

LDBL_MIN LDBL_MAX

-128 127

255

-32768 32767

65535

-2 147 483 648 2 147 483 647

4 294 967 295

1.17549e-038 3.40282e+038

2.22507e-308 1.79769e+308

2.22507e-308 1.79769e+308

Таблица 1.4 Константы для вещественных типов

float> или <float.h>

FLT_RADIX

Основание экспоненциального представления (2, 16)

FLT_DIG

Количество верных десятичных цифр для типа float

FLT_EPSILON

Минимальное х такое, что 1.0+х ≠1.0? где х принадлежит типу float

FLT_MAX_EXP

Максимальное n такое, что (FLT_RADIX n -1) представимо в виде числа float

FLT_MAX_10_EXP

Максимальное n такое, что 10 n представимо как float

FLT_MIN_EXP

Минимальное n такое, что 10 n представимо в виде нормализованного числа типа float

FLT_MIN_10_EXP

Минимальное отрицательное целое n такое, что 10 n - в области определения чисел типа float

DBL_DIG

Количество верных десятичных цифр для типа double

DBL_EPSILON

Минимальное х такое, что 1.0+х ≠1.0, где х принадлежит типу double

DBL_MAX_EXP

Максимальное n такое, что (FLT_RADIX n -1) представимо в виде числа double

DBL_MAX_10_EXP

Максимальное n такое, что 10 n представимо как double

DBL_MIN_EXP

Минимальное n такое, что 10 n представимо в виде нормализованного числа типа double

DBL_MIN_10_EXP

Минимальное отрицательное целое n такое, что 10 n - в области определения чисел типа double