Перевод этой страницы?:

enum

Синтаксис:

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 );