enum
型指定子の中で整数型に属するものとして「列挙型」(enumerated type)があります。
■enum
(列挙体,enumeration)
enum タグ {const1, const2,...}; enum タグ 変数名 = 列挙定数;
{ }
内の「列挙体メンバ」const1
や const2
は,列挙定数(enumeration constant)と呼ばれ,整数定数や文字定数と同様に int
型の定数として扱われます。[C99, 6.4.4, 1 & 6.4.4.3] const1
には 0
が入り,以下 1
,2
といった具合に連続した整数が入ります。タグ
は列挙体を特定化するために付す識別子です。変数 変数名
の型は enum タグ
(列挙体タグ
型)ですが,データとしては列挙定数のすべての値が収まる整数型(例えば,int
型)で,処理系依存です。[C99, 6.7.2.2, 4]
/* Example 4.5 */ #include <stdio.h> int main(void) { enum weekday {sun, mon, tue, wed, thu, fri, sat}; enum weekday day = tue; printf("weekday = %d\n", day); return 0; }
実行結果です。
weekday = 2
タグを外した宣言も可能です。
enum {const1, const2,...} 変数名 = 列挙定数;
この場合,変数名
は enum {const1, const2,...}
型です。
/* Example 4.6 */ #include <stdio.h> int main(void) { enum {sun, mon, tue, wed, thu, fri, sat} weekday = tue; printf("weekday = %d\n", weekday); return 0; }
ただ単に,整数の定数の作成にも利用できます。
enum {const1, const2,...};
/* Example 4.7 */ #include <stdio.h> int main(void) { enum {a, b, c, d = 5, e, f}; printf("c + e = %d\n", c + e); return 0; }
実行結果です。
c + e = 8
a
に 0
,b
に 1
,c
に 2
が入ります。d
には 5
が入り,以下 6
,7
と入ります。