Перечисляемые типы в С++

Перечислимый тип в С++ вводится ключевым словом enum и задает набор значений, определяемый пользователем. Набор значений заключается в фигурные скобки и является набором целых именованных констант, представленных своими идентификаторами. Эти константы называются перечислимыми константами. Рассмотрим объявление:

enum Suit {CLUBS, DIAMONDS, HEARTS, SPADES};

С его помощью создается целочисленный тип набором из четырех названий мастей, именующих целочисленные константы. Перечислимые константы - это идентификаторы CLUBS, DIAMONDS, HEARTS и SPADES, имеющие значения - 0, 1, 2 и 3, соответственно. Эти значения присвоены по умолчанию. Первой перечислимой константе присваивают постоянное целое численное значение 0. Каждый последующий член списка на единицу больше, чем его сосед слева. Переменным типа Suit, определенного пользователем, может быть присвоено только одно из четырех значений, объявленных в перечислении

Другой популярный пример перечислимого типа:

enum Months {JAN = 1, FEB, MAR, APR, MAY, YUN, YUL AUG, SEP, OCT, NOV, DEC};

Это объявление создает определенный пользователем тип Months с константами перечисления, представляющими месяцы года. Поскольку первое значение приведенного перечисления установлено равным 1, оставшиеся значения увеличиваются на 1 от 1 до 12.

В объявлении перечислимого типа любой константе перечисления можно присвоить целое значение.

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

2. Идентификаторы в enum должны быть уникальными, но отдельные константы перечисления могут иметь одинаковые целые значения.

3. Набор идентификаторов перечислимого типа — собственный уникальный тип, отличающийся от других целочисленных типов.

4. Перечислимые константы могут определяться и инициализироваться произвольными целочисленными константами, а также константными выражениями:

enum ages (milton = 47, ira, harold = 56, philip = harold + 7};

Примечание: Обратите внимание на то, что когда нет явного инициализатора, применяется правило по умолчанию, таким образом - ira = 48. Кроме того, значения перечислимых констант могут быть не уникальными. 5. Каждое перечисление является отдельным типом. Типом элемента перечисления является само перечисление. Например, в

enum Keyword {ASM, AUTO, BREAK};
 

AUTO имеет тип Keyword.

6. Перечислимая константа может быть объявлена анонимно, то есть без имени типа.

enum {FALSE, TRUE};
enum {lazy, hazy, crazy} why;

Первое объявление — распространенный способ объявления мнемонических целочисленных констант. Второе объявление объявляет переменную перечислимого типа why, с допустимыми значениями этой переменной lazy,hazy и crazy.

7. Перечисления могут неявно преобразовываться в обычные целочисленные типы, но не наоборот.

enum boolean {FALSE, TRUE} q;  
enum signal {off, on} a = on;  //а инициализируется в on  
enum answer {no, yes, maybe = -1} b;   

int i, j = true;  //верно true преобразуется в 1 
 
a = off;  //верно  

і = а;  //верно i становится 1  

q = а;  //неверно два различных типа  

q = (boolean)а;  //верно явное преобразование приведением

Рекомендуемые обзоры инструментов

Обзор и отзывы об антидетект браузере Aurorium AI.
Aurorium AI: Обзор и отзывы

Инновационный браузер с поддержкой ИИ

Обзор и отзывы об антидетект браузере Undetectable.
Undetectable Browser: Честный обзор

Бесконечные профили для арбитража

Антидетект браузер Vision: обзор и реальные отзывы.
Браузер Vision: Реальные отзывы

Надежное решение для мультиаккаунтинга

Обзор и отзывы об антидектет браузере Dolphin.
Dolphin {anty}: Обзор функционала

Лидер рынка для арбитражников

📌 Умный подбор сервера: Официальный инструмент проекта DIEG — агрегатор DIEG Finder. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти и сравнить по параметрам подходящий VPS/VDS сервер для любых задач хостинга.
📌 Инфраструктура для разработчиков: Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов читайте здесь.