Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 1.docx
Скачиваний:
11
Добавлен:
26.09.2019
Размер:
364.88 Кб
Скачать

Перечисление (enum).

Перечисление (enum) – является простым целочисленным типом, чей размер совпадает с размером типа int (т.е. для Win32 – 4 байта). Перечисление – это набор заранее заданных в следующей форме констант:

enum ИмяПеречисления

{

константа1,

константа2

}ИмяПеременной;

где ИмяПеречисления – некоторый идентификатор перечисления,

ИмяПеременной – имя создаваемой переменной.

Внутри фигурных скобок идёт список констант (элементов перечисления), разделённых запятой. Создаваемая переменная будет иметь тип ИмяПеречисления и сможет принимать только те значения, которые указаны в списке констант. ИмяПеременной может опускаться, в этом случае переменная создаваться не будет, а будет описано только само перечисление. Переменная с таким типом может быть создана позже, особым образом. ИмяПеречисления также может быть опущено – в этом случае повторное использование этого перечисления (например, для создания ещё одной переменной) становится невозможным.

Все константы в списке ассоциируются с каким-либо уникальным в пределах списка целочисленным значением. Некоторым (или всем) из констант может быть присвоено конкретное целочисленное значение в явном виде с помощью операции присваивания. Если же для какого-либо элемента его значение не задаётся, то оно принимается равным значению предыдущего элемента, увеличенному на 1. Если значение первого элемента перечисления не проинициализировано, то оно принимается равным нулю.

Примеры:

enum En1

{

item1=1, // 1

item2, // 2

item3 // 3

};

enum En2

{

item1, // 0

item2, // 1

item3=10, // 10

item4, // 11

item4=25 // 25

}EnumVar;

В первом примере создаётся только перечисление, во втором – перечисление и переменная.

Переменные с типом enum не обязательно создавать непосредственно в момент объявления перечисления. Это можно сделать и позже с помощью всё того же ключевого слова enum. Синтаксис определения переменной выглядит следующим образом:

enum ИмяПеречисления ИмяПеременной;

Например, для описания ещё одной переменной с типом перечисление En2, необходимо записать:

enum En2 MyVar;

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

Константы, указанные в любом из перечислений могут быть использованы при работе и с обычными целочисленными переменными – на этапе прекомпиляции вместо них будут подставлены соответствующие целочисленные значения. Например:

enum MyEnum

{

item1,

item2

};

main()

{

int i;

i=item1;

}

Некоторые компиляторы довольно чувствительно относятся к такому методу использования элементов перечисления и выдают предупреждение или даже ошибку о несоответствии типов.

Точно также в переменные, имеющие тип enum, можно записывать (и читать из неё) непосредственно целочисленную константу. В этом случае также возможны предупреждения со стороны компилятора, хотя в большинстве случаев он трактует любой тип enum как обычный тип int.