C言語 enum 列挙型とは?

今回は、列挙型について説明していきます。

#include <stdio.h>

/* 列挙型のtvを宣言 */
enum tvCH{
      TV_NHK,
      TV_KYOIKU,
      TV_FUJI
};

void show(enum tvCH ch);

void main(void) {
      show(TV_NHK);
      show(TV_KYOIKU);
      show(TV_FUJI);
}

void show(enum tvCH ch) {
      switch (ch) {
            case TV_NHK:
                  printf("ch=NHK\n");
                  break;
            case TV_KYOIKU:
                  printf("ch=KYOIKU\n");
                  break;
            case TV_FUJI:
                  printf("ch=FUJI\n");
                  break;
            default:
                  break;
      }
}

列挙型と言う新しい型を宣言して作っています。

/* 列挙型のtvを宣言 */
enum tvCH{
      TV_NHK,
      TV_KYOIKU,
      TV_FUJI
};

列挙型は、ある項目に関連するデータの集まりを表す型です。

また、列挙型の項目は、内部的に整数が割り当てられています。

列挙型の先頭項目から定義順に、0 から値が割り当てられます。

この場合は、TV_NHK が0 TV_KYOIKU が1 TV_FUJI が 2となります。

列挙型による表現は、#define による記号定数でも表すことができますが、

記号定数は、プログラムのあらゆる箇所に影響してきて、
管理しづらいものですが、

列挙型は、static をつける事によって、影響を与える箇所を限定でき、
管理しやすいので、できるだけ列挙型を使うようにしましょう。