C/C++

列挙型

更新日:

列挙型とは

列挙型は連続する定数を定義する型です。
列挙体ともいいます。

列挙型で定義される定数をメンバと言い、1つ目のメンバから順番に0,1,2…と定数値が割り当てられていきます。

使い方

enum 【キー名】{【メンバ】,…}【変数名】;


変数名は省略できます。
その場合は

enum 【キー名】 【変数名】;


と、通常の変数の宣言と似たような形で定義できます。

以下がサンプルコードです。

enum_sample.c

#include <stdio.h>

enum month
{
	JAN,
	FEB,
	MAR,
	APR,
	MAY,
	JUN,
	JUL,
	AUG,
	SEP,
	OCT,
	NOV,
	DEC
};

int main(void)
{
	enum month i = OCT;

	printf("%d\n", i);

	return 0;
}

このように、数字の並びを文字で表現したいときに使います。

また、

enum_sample1.c

enum month
{
	JAN = 1,
	FEB,
	MAR,
	APR,
	MAY,
	JUN,
	JUL,
	AUG,
	SEP,
	OCT,
	NOV,
	DEC
};

と書くと、0からではなく1から始まります。

値を途中から変更することができます。

enum_sample2.c

enum month
{
	JAN ,
	FEB,
	MAR,
	APR,
	MAY,
	JUN,
	JUL = 10,
	AUG,
	SEP,
	OCT,
	NOV,
	DEC
};

と書くと、JANから順に0,1,2,,3,4,5,10,11…となります。

応用

主な用途として、swtch文のcaseの値として用いることがあります。
値を直接書くよりもわかりやすくなります。

分岐処理-if文,switch文の使い方

enum_sample3.c

switch(month)
{
case 0:【処理】;
case 1:【処理】;
case 2:【処理】;
…
}

enum_sample4.c

switch(month)
{
case JAN:【処理】;
case FEB:【処理】;
case MAR:【処理】;
…
}

こちらの例の方が意味を理解しやすいでしょう。

余談ですが、慣習として列挙型に限らず定数は大文字で書くことが多いです。
これは変数と見分けるためかと思われます。



-C/C++

Copyright© C言語/C++入門講座  ツナサーモン , 2019 All Rights Reserved Powered by AFFINGER5.