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

Перечисляемые константы

Константы перечисляемого типа вводятся с помощью ключевого слова enum. Это обычные целочисленные константы, которым приписаны уникальные и удобные для использования обозначения (идентификаторы, отражающие назначение, смысл константы):

enum {one=1, two=2, three=3}; // one, two, three – условные имена, //введенные для обозначения констант

enum color {red, yellow, green}; //значения приписываются по умолчанию: red=0, yellow=1,… // color – название перечисляемого типа enum {red=10, yellow=3, green=4}; // приписываются указанные значения: red=10 и т.д.

enum {red=10, yellow=3, green=10}; // приписываются указанные значения: OK!!!

enum {red=10, yellow=3, green=red*10}; // приписываются указанные значения: OK!!!

enum {red=-2, yellow, green}; // приписываются указанные значения: OK!!!

Препроцессорные константы

Препроцессорные константы – также возможный способ определения констант в С++. Для этого используется директива препроцессора #define :

#define IDENTIFICATOR ZAMENA

Эта директива вызывает замену в тексте программы каждого появления имени IDENTIFICATOR на текст ZAMENA.

Например:

#define MAX_LEN 100 //в программе имя MAX_LEN заменится на 100

С помощью директивы #define можно выполнять «настройку» программы. Например, если в программе предполагается работать с массивом, то его размер можно явно определить на этапе препроцессорной обработки заданием именованного литерала:

исходный текст

результат препроцессорной обработки

#define K 40

void main ()

{int M[K] [K];

float A[K], B[K] [K]; …….

void main ()

{int M[40] [40];

float A[40], B[40] [40];

При таком описании легко изменять предельные размеры сразу всех массивов, изменив только одно значение в команде #define. В то же время сегодня такой способ определения именованных констант в С++ используется редко.

Обратите внимание на особенности работы с константами:

1.

const int i = 7; // целая константа

// i = 9; неверно, значение константы не должно изменяться

// const int j; неверно, отсутствует начальное значение константы

const int k(4); // верно, целая константа

2. Примеры определений символьной константы:

const char c='1';

const char d=49; // 49 – это код ‘1’ в 10-ичной с/с

const char dd=061; // 61 – это код ‘1’ в 8-ичной с/с

const char ddd=0x31; // 31 – это код ‘1’ в 16-ичной с/с

const char ed='\0x31'; //задание символьной константы ESC-последовательностью в 16 с/с

const char edd='\61'; //задание символьной константы ESC-последовательностью в 8 с/с

3. Примеры определений вещественной константы:

const float f = 1.5f;

const double df = 1.5;

const long double d = -3.7L;

const double expf = 5.55e-12;

4. Для уточнения типа константы можно использовать суффикc:

123 //тип signed int

11234L или 11234l //тип signed long int

123U или 123u, //тип unsigned int

2.78F или 2.78f //тип float

2.78 //тип double

2.78L или 2.78l //тип long double

5. Следующие объявления констант не эквивалентны:

const int k = 7;

#define k 7

В первой строке определяется именованная типизированная константа – переменная, занимающая некоторую область памяти, а во второй – препроцессорная константа.