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 <имя_типа>
<имя_элемента>[=<значение>]
[<имя_элемента>[=<значение>] ]
.......................................................