C: enum – перечисление

Автор: | 13/04/2015
 

C_logoПеречисление – тип данных, задаваемый пользователем, состоящий из целочисленных констант и связанных с ними имён.

Для определения перечисления используется ключевое слово 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!

Ссылки по теме

http://www.programiz.com

http://crasseux.com

http://www.c4learn.com