Описание перечисления
Перечисления являются int с именованными константами.
enum_спецификатор: enum идентификатор opt { enum_список }
enum_список: перечислитель enum_список, перечислитель
перечислитель: идентификатор идентификатор = константное_выражение
Идентификаторы в enum-списке описаны как константы и могут появляться во всех местах, где требуются константы. Если не появляется ни одного перечислителя с =, то значения всех соответствующих констант начинаются с 0 и возрастают на 1 по мере чтения описания слева направо. Перечислитель с = дает ассоциированному с ним идентификатору указанное значение; последующие идентификаторы продолжают прогрессию от присвоенного значения.
Имена перечислителей должны быть отличными от имен обычных переменных. Значения перечислителей не обязательно должны быть различными.
Роль идентификатора в спецификаторе перечисления enum_спецификатор полностью аналогична роли имени класса; он именует определенный нумератор. Например:
enum color { chartreuse, burgundy, claret=20, winedark }; ... color *cp, col; ... col = claret; cp = col ... if (*cp == burgundy) ...
делает color именем типа, описывающего различные цвета, и затем описывает cp как указатель на объект этого типа. Возможные значения извлекаются из множества { 0, 1, 20, 21 }.