Синтаксис:
enum name {name-list} var-list;
Ключевое слово enum используется для создания перечисляемого типа name, состоящего из элементов name-list'а. Аргумент var-list необязателен, он используется для создания экземпляров данного типа сразу после объявления. Например, данный код создает перечислимый тип для цветов:
enum ColorT {red, orange, yellow, green, blue, indigo, violet}; ... ColorT c1 = indigo; if( c1 == indigo ) { cout << "c1 is indigo" << endl; }
Целью перечисления в предыдущем примере является определение нескольких новых констант: red, orange, yellow, и т.д. По умолчанию, данным константам соответствует последовательность целочисленных значений, начинающаяся с нуля. Однако, вы можете изменить значения этих констант, как показано ниже:
enum ColorT { red = 10, blue = 15, green }; ... ColorT c = green; cout << "c is " << c << endl;
При выполнении данного кода на экране появится:
c is 16
Учтите, что все вышеописанные примеры будут работать только с компиляторами C++. При работе с обычным C, вам придется писать ключевое слово enum каждый раз, когда вы создаете экземпляр перечисляемого типа:
enum ColorT { red = 10, blue = 15, green }; ... enum ColorT c = green; /* обратите внимание на дополнительное ключевое слово enum */ printf( "c is %d\n", c );
Есть и другой способ - добавить typedef, чтобы уравнять C и C++:
typedef enum ColorT { red = 10, blue = 15, green } ColorT; ... ColorT c = green; /* ключевое слово enum больше не требуется */ printf( "c is %d\n", c );