Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Си++ Занятие 10.doc
Скачиваний:
5
Добавлен:
19.11.2019
Размер:
123.39 Кб
Скачать

9.9 Перечисления

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

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

Формат:

enum [имя_типа] {список_констант};

Имя типа задается в том случае, если в программе требуется определять переменные этого типа. Компилятор обеспечивает, чтобы эти переменные принимали значения только из списка констант. Константы должны быть целочисленными и могут инициализироваться обычным образом. При отсутствии инициализатора первая константа обнуляется, а каждой следующей присваивается на единицу больше значение, чем предыдущей.

Пример 16.

enum BOOLEAN

{ FALSE,

TRUE

};

Данное перечисление можно заменить последовательностью из двух строк:

const int FALSE = 0;

const int TRUE = 1;

Т.е. перечисление задает неявно символические константы целого типа. После такого объявления имена FALSE и TRUE можно использовать в качестве символических констант нуля и единицы или использовать созданный тип при передаче параметров в функцию по значению.

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

void f(enum BOOLEAN flag)

{ if (flag==FALSE) printf (“false\ n”);

else printf (“true\n”);

}

void main()

{ f (FALSE);

f (TRUE);

}

В такой виде программа лучше читается, но, к сожалению, компилятор не проводит проверки правильности использования типа enum BOOLEAN, например, если программист напишет не имеющее смысла выражение f(25), ошибки не последует!

Пример 17.

// ввести новый тип данных seasons

enum seasons (spring, summer, autumn, winter);

enum seasons a, b, c; //определить переменные

Каждая из переменных a, b, c может принимать одно из 4-х значений: spring, summer, autumn, winter.

Во всех предыдущих примерах нумерация выполнялась по умолчанию, т.е. начиналась с 0, но можно проводить нумерацию элементов в перечислении произвольно.

Пример 18. задать имена для кодировки цветовой гаммы при выводе графической информации на экран терминала.

enum COLOR

{RED=10, //Начать нумерацию с 10

GREEN, //GREEN ==11

BLUE, //BLUE == 12

MAGENTA = 16

};

В перечислении enum COLOR нумерация начинается с 10 (RED), а затем идет подряд (GREEN, BLUE), если нужно сделать пропуск в нумерации, следует явно указать значение следующего элемента (MAGENTA = 16).

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