列挙型に関する記事です。
switch文と合わせて使用した例も紹介しています。
列挙型とは?
列挙型とは、整数値に特定の名称を付与するためのデータ型のことです。
列挙型を使うことで、プログラムを少し見やすくすることが出来ます。
switch文と合わせて使うことが多いですね。
列挙型の宣言
列挙型を利用する場合は、以下の二つの工程が必要です。
- 列挙型テンプレートの宣言
- 列挙型変数の宣言
列挙型テンプレートの宣言
列挙定数は、0から順番に1ずつ増えた整数値となります。
任意の数を代入すると、その数から1ずつ増えた整数値に変わっていきます。
後半では、実際に列挙型を使用した例を紹介しているので、そちらを見てみると分かりやすいです。
enum 列挙型テンプレート{
列挙定数①,
列挙定数②,
・・・・
};
// 列挙型の宣言
enum Month {
January = 1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
};
列挙型変数の宣言
列挙型テンプレートの宣言後、実際に列挙型を使う場合は、列挙型変数の宣言をします。
設計図から実物を作成するイメージです。
enum 列挙型テンプレート 列挙型変数;
列挙型テンプレート 列挙型変数;
// 列挙型変数の宣言
enum Month month;
Month month; // enumの省略
【enum】は、省略して記述することも可能です。
テンプレートと変数の同時宣言
列挙型テンプレートの宣言と、列挙型変数の宣言は同時に行うことが出来ます。
enum 列挙型テンプレート{
列挙定数①,
列挙定数②,
・・・・
} 列挙型変数;
// 列挙型の宣言
enum Month {
January = 1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
} month;
列挙型の利用
コーディング例①
最もスタンダードな使い方です。
#include <stdio.h> // printf()を使用するために必要
// 列挙型の宣言
enum TEST {
A,
B,
C,
D,
E
};
int main()
{
// 列挙型変数の宣言
TEST a, b, c, d, e;
a = A;
b = B;
c = C;
d = D;
e = E;
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
printf("%d\n", d);
printf("%d\n", e);
return 0;
}
出力
0
1
2
3
4
コーディング例②
列挙型に任意の数値を与えてみます。
#include <stdio.h> // printf()を使用するために必要
// 列挙型の宣言
enum Month {
January = 1,
February,
March,
October = 10,
November,
December
};
int main()
{
// 列挙型変数の宣言
Month month, month2;
month = February;
month2 = November;
printf("%d\n", month);
printf("%d\n", month2);
return 0;
}
出力
2
11
コーディング例③
switch文と合わせて使用してみます。
列挙型を使うことで、少しは読みやすいコードになったのではないでしょうか。
#include <stdio.h> // printf()を使用するために必要
// 列挙型の宣言
enum Month {
January = 1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
};
int main()
{
// 列挙型変数の宣言
Month month = April;
switch (month) {
case January:
printf("今月は睦月です。\n");
break;
case February:
printf("今月は如月です。\n");
break;
case March:
printf("今月は弥生です。\n");
break;
case April:
printf("今月は卯月です。\n");
break;
case May:
printf("今月は皐月です。\n");
break;
case June:
printf("今月は水無月です。\n");
break;
case July:
printf("今月は文月です。\n");
break;
case August:
printf("今月は葉月です。\n");
break;
case September:
printf("今月は長月です。\n");
break;
case October:
printf("今月は神無月です。\n");
break;
case November:
printf("今月は霜月です。\n");
break;
case December:
printf("今月は師走です。\n");
break;
}
return 0;
}
出力
今月は卯月です。
¥36,980 (2023/05/16 22:17時点 | Amazon調べ)
ポチップ
¥22,999 (2023/05/01 10:00時点 | Amazon調べ)
ポチップ