C enum(列挙型)
列挙型は C 言語における基本的なデータ型の一つで、離散的な値を持つ定数のグループを定義するために使用されます。データをより簡潔で読みやすくすることができます。
列挙型は通常、プログラム内の関連する定数のグループに名前を付けるために使用され、プログラムの可読性と保守性を高めます。
列挙型を定義するには、次を使用する必要がありますenumキーワードの後には、列挙型の名前、そして中括弧{}で囲まれた一連の列挙定数。各列挙定数は識別子で表すことができ、整数値を指定することもできます。指定しない場合、デフォルトで0始まり、増加します。
列挙型の構文定義の形式は次のとおりです:
enum 枚举名 {枚举元素1,枚举元素2,……};
次に例を挙げます。たとえば、1週間は7日あります。列挙型を使わない場合、各整数に別名を定義するために #define を使用する必要があります:
これだとコード量が多くなります。次に列挙型を使用する方法を見てみましょう:
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
この方がより簡潔に見えませんか?
注意:最初の列挙メンバーのデフォルト値は整数型の 0 です。後続の列挙メンバーの値は、前のメンバーの値に 1 を加えたものです。この例では、最初の列挙メンバーの値を 1 に定義し、2 番目を 2 にし、以降同様にします。
列挙型を定義するときに、列挙子の値を変更できます:
enum season {spring, summer=3, autumn, winter};値が指定されていない列挙子の値は、前の列挙子の値に 1 を加えたものになります。つまり、spring の値は 0、summer の値は 3、autumn の値は 4、winter の値は 5 です。
列挙型変数の定義
先ほどは列挙型を宣言しただけなので、次に列挙型変数の定義方法を見ていきましょう。
次の3つの方法で列挙型変数を定義できます。
1. 列挙型を定義してから、列挙型変数を定義する
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
2. 列挙型の定義と同時に列挙型変数を定義する
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
3. 列挙型の名前を省略して、直接列挙型変数を定義する
enum
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
例
上記の例の出力結果は次のとおりです:
3
C 言語では、列挙型は int または unsigned int 型として扱われるため、C 言語の仕様に従うと列挙型を走査する方法はありません。
ただし、いくつかの特別な場合には、列挙型が連続していれば、条件付きで走査を実現できます。
次の例では for を使用して列挙子を走査します:
例
上記の例の出力結果は次のとおりです:
枚举元素:1 枚举元素:2 枚举元素:3 枚举元素:4 枚举元素:5 枚举元素:6 枚举元素:7
次の列挙型は連続していません。このような列挙型は走査できません。
enum
{
ENUM_0,
ENUM_10 = 10,
ENUM_11
};
switch 内での列挙型の使用:
例
上記の例の出力結果は次のとおりです:
请输入你喜欢的颜色: (1. red, 2. green, 3. blue): 1 你喜欢的颜色是红色
整数を列挙型に変換する
次の例では、整数を列挙型に変換します:
例
上記の例の出力結果は次のとおりです:
weekend:1その他の拡張