PR

【C・C++】列挙型とは?【enum・宣言・参照】

アイキャッチ C++
この記事は約5分で読めます。

列挙型に関する記事です。
switch文と合わせて使用した例も紹介しています。

のんびり丸

WEBアプリの開発等をしています。
日々の学習の備忘録として運営していこうと思います。

のんびり丸をフォローする

列挙型とは?

列挙型とは、整数値に特定の名称を付与するためのデータ型のことです。
列挙型を使うことで、プログラムを少し見やすくすることが出来ます。
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;
}
出力
今月は卯月です。
タイトルとURLをコピーしました