Перечисление – тип данных, задаваемый пользователем, состоящий из целочисленных констант и связанных с ними имён.
Для определения перечисления используется ключевое слово 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!
Ссылки по теме