Справочник языка Cи



         

Объявление переменной перечислимого типа - часть 2


для перечислимого типа, использующие тег ранее не определенного перечислимого типа. Однако этот тип должен быть определен к моменту использования этого тега или типа, объявленного посредством typedef.

<Список-перечисления> содержит одну или более конструкций вида:

<идентификатор> [=<константное-выражение>]

Конструкции в списке разделяются запятыми. Каждый <идентификатор> именует элемент списка перечисления. По умолчанию, если не задано <константное-выражение>, первому элементу присваивается значение 0, следующему элементу—значение 1 и т. д. Элемент списка перечисления является константой.

Запись =<константное-выражение> изменяет умалчиваемую

последовательность значений. Элемент, идентификатор которого предшествует записи =<константное-выражение>, принимает значение, задаваемое этим константным выражением. Константное выражение должно иметь тип int и может быть как положительным, так и отрицательным. Следующий элемент списка получает значение, равное <константное-выражение>+1, если только его значение не задается явно другим константным выражением.

В списке перечисления могут содержаться элементы, которым сопоставлены одинаковые значения, однако каждый идентификатор в списке должен быть уникальным. Например, двум различным идентификаторам null

и zero может быть задано значение 0 в одном и том же списке перечисления. Кроме того, идентификатор элемента списка перечисления должен быть отличным от идентификаторов элементов всех остальных списков перечислений с той же областью действия, а также от других идентификаторов с той же областью действия (см. раздел 2.5). Тег перечислимого типа должен быть отличным от тегов других перечислимых типов, структур и объединений с той же самой областью действия.

Примеры.

/* пример 1 */

enum day {

SATURDAY,

SUNDAY = 0,

MONDAY,

TUESDAY,

WEDNESDAY,

THURSDAY,

FRIDAY

} workday;

/* пример 2 */

enum day today = WEDNESDAY;

В первом примере перечислимый тип определяется списком. Перечислимый тип именуется тегом

day, и объявляется переменная workday

этого перечислимого типа. С элементом SATURDAY

по умолчанию ассоциируется значение 0. Элементу SUNDAY

явно присваивается

значение ноль. Остальные идентификаторы по умолчанию принимают значение от 1 до 5.

Во втором примере переменная перечислимого типа today

инициализируется значением одного из элементов списка перечисления. Так как перечислимый тип с тегом day был предварительно объявлен, то при объявлении today

достаточно сослаться только на тег

day, не записывая повторно сам список перечисления.

Примечание. В языке Си принято записывать имена элементов перечисления прописными буквами, однако это необязательно.




Содержание  Назад  Вперед