列挙型
列挙型(れっきょがた、enumerated type)とは、プログラマが選んだ各々の識別子をそのまま有限集合として持つ抽象データ型のことです。
整数定数を並べて名前をつけて取り扱うことができ、データを識別するための整数をまとめて扱う際に使用されます。
整数と列挙値は自由に変換可能であり、列挙値でも全ての数値演算が可能となっています。
列挙型を使用した記述例
// 列挙型 program in C.
#include <stdio.h>
#include <string.h>
// 評価 一覧
enum Rank { A_PLUS, A, A_MINUS, B_PLUS, B, B_MINUS };
int main(int argc, char *args[])
{
char comment[12]; // コメント
enum Rank rank = B_PLUS; // 評価
// 評価によってコメントを判定します
switch (rank)
{
case A_PLUS: // A+
case A: // A
case A_MINUS: // A-
strncpy(comment, "Graet!!", sizeof(comment));
break;
case B_PLUS: // B+
case B: // B
case B_MINUS: // B-
strncpy(comment, "OK...", sizeof(comment));
break;
default:
break;
}
printf("Rank > %d %s\n", rank, comment);
return 0;
}
通常 0 始まりで整数値が割り当てられますが、「A_PLUS=1」のように開始整数値を指定することで、以降 2,3... と割り当てることも可能です。
上記コードでは 「A_PLUS」からの 0 始まりで「B_PLUS」には 3 が割り当てられます。
実行結果
Rank > 3 OK...