Перечисление — тип данных, задаваемый пользователем, состоящий из целочисленных констант и связанных с ними имён.
Для определения перечисления используется ключевое слово enum.
Синтаксис определения enum:
enum type_name{value1, value2, ..., valueN };
Например:
enum count {one, two, three, four, five };
Тут count — имя переменной типа enum, а one, two и т.д. — имена значений.
По умолчанию — значения переменным присваиваются компилятором от 0, т.е. one в данном случае будет 0, а five — 4:
#include <stdio.h>
int main(void) {
enum count {one, two, three, four, five };
enum count var;
var = one;
printf ("Var = %dn", var);
return 0;
}
Результат выполнения такого кода:
$ ./enumarate Var = 0
Значения можно переопределить:
enum count {one = 100, two, three, four, five };
$ ./enumarate Var = 100
При этом значение следующих переменных будет увеличиваться на +1, начиная от последней спецификации (one = 100 в примере выше):
var = five;
Вернёт значение:
$ ./enumarate Var = 104
Перечисления так же можно использовать с функциями и с оператором switch:
#include <stdio.h>
enum compass_direction {north, east, south, west};
enum compass_direction get_direction() {
return south;
}
int main () {
enum compass_direction my_direction;
puts ("Which way are you going?");
my_direction = get_direction();
switch (my_direction)
{
case north:
puts("North? Say hello to the polar bears!");
break;
case south:
puts("South? Say hello to Tux the penguin!");
break;
case east:
puts("If you go far enough east, you'll be west!");
break;
case west:
puts("If you go far enough west, you'll be east!");
break;
}
return 0;
}
Результат:
$ ./enumarate Which way are you going? South? Say hello to Tux the penguin!
Ссылки по теме




