Перечислимый тип

10.1.1. Тип enum (C)

Относится к целым типам данных. Применяется для объявления целых переменных, которые могут принимать только строго определенные значения, число которых можно перечислить в нужном порядке. Сначала объявляется новый тип данных:

enum <имя_типа>{<имя_элемента>[=<значение>],

[<имя_элемента> [=<значение>]]...};

Пример.

enum spectr{RED, ORANGE, YELLOW, GREEN, BLUE, VIOLET};

 

Затем можно определять переменные этого типа:

[enum] spectr color1, color2;

В языке C++ указание ключевого слова enum при объявлении переменных перечислимого типа не является обязательным, если инструкция объявления этого типа записана в программе раньше. Ключевое слово enum является сокращением от enumeration – перечисление.

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

#define RED 0

#define ORANGE 1

#defineYELLOW 2

#defineGREEN 3

#define BLUE 4

#defineVIOLET 5

Переменные типа spectr могут принимать только указанные значения. При попытке присваивания им другого значения транслятор выдает ошибку.

Пример.

color1=GREEN; // Допустимо

color2=WHITE; // Ошибка!

Если при объявлении типа символическим константам из списка не задается значений, то первая из них по умолчанию получает значение 0, последующие на 1 больше. Если какой-либо из констант задается значение, а последующим нет, то они получают следующее по порядку целое значение.

Пример.

enum RussianCop{one=1, five=5, ten=10, fifty=50};

enum RussianRoub{One=1, Two, Five=5, Ten=10, Fifty=50, Hundred=100, FiveHundred=500, Thousand=1000};

enum mark{BAD=2, MIDDLE, GOOD, FINE};

Как известно, в языке C не определен логический тип данных, однако он легко вводится с помощью объявления вида: enum bool{false,true };

Фактически разумными при работе с данными перечислимых типов являются только следующие операторы: присваиваниеàcolor1=VIOLET; и сравнениеàcolor1==color2.

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

10.1.2. Тип enum (B)

Практически аналогичен такому же типу языка C.

Формат объявления типа:

enum <имя_типа>

<имя_элемента>[=<значение>]

[<имя_элемента>[=<значение>] ]

.......................................................