Это множество поименованных целых констант, называемых перечислимыми константами. Перечислительный тип определяет все допустимые значения, которые могут иметь переменные этого типа. Основная форма объявления
enum <имя типа> {список названий} [список переменных];
Список переменных может быть пустым.
Пример: enum test{test1, test2, test3,test4};
enum test t;
Каждое из имен test1… test4 представляет собой целую величину (если они не определены по-другому). По умолчанию они соответствуют 0,1,2,3.
Во время объявления типа можно одному или нескольким перечисленным константам присвоить другие значения (константными выражениями).
Пример: еnum Ages {stas=18, ira, alex=19,Nina= alex-1};
Когда нет явного инициализатора, то применяется правило по умалчиванию: каждая следующая перечислимая константа увеличивается на единицу (+1) по сравнению с предшествующей. В примере вычисляется ira=19; Nina=18;
С переменными перечислимого типа можно проводить следующие операции:
– присвоить переменную типа enum другой переменной того же типа;
– провести сравнение с целью выяснения равенства или неравенства;
– некоторые арифметические операции с константами типа enum.
Пример: i= test4-test2;
Оператор print f(¢¢%d %d”, test1, test4); выдаст на экран числа 0 и 3.
t= test3;
t++ ; // теперь t= test4;
t -=2 ; // t = test2;
С перечислениями можно работать как с целыми типами. Перечисления неявно могут преобразовываться в обычные целочисленные типы, но не наоборот.
Пример использования перечислений.
#include <stdio.h>
void main()
{
enum test {t1,t2,t3,t4,t5} t;
printf("t1=%d t4=%d\n", t1,t4); // 0 3
t=t1; printf("t=t1 = %d\n ", t); // 0
t++; printf("t++ = %d\n ", t); // 1
t=t4; t-=2;
printf("t4=%d t-=2 = %d\n ", t4, t); // 3 1
t--; printf("t-- = %d\n ", t); // 0
t=t4; t=t-t2; printf("t= = %d\n ", t); // 2
}
Нельзя использовать другие арифметические операции. Перечислимые константы могут быть объявлены анонимно(без имени).
Пример.
enum{false, true} boolean; //объявляет переменную boolean с допустимыми
// значениями false, true.
Основное назначение перечислений улучшить читаемость программы.