C ++:列挙型


記事ディレクトリ


1.列挙型

場合によっては、データの価値は限られた可能性しかない。たとえば、ゲームが勝った、負けた、引き分けられた、ゲームがキャンセルされたという状況は4つしかなく、週に7日しかありません。intおよびchar型を使用してそれらを表すことができますが、データの合法性をチェックするのは面倒なことです。では、限られた数の値しか持たず、データの有効性を自動的に確認できるデータ型はありますか?答えはイエスです。C ++の列挙型は、特にこのような問題を解決するために使用されます。

文法:

enum列挙型名{変数値のリスト};

例えば:

列挙型平日{SUN、MON、TUE、WED、THU、FRI、SAT};

列挙型のアプリケーションの説明:

  1. 列挙要素は定数として扱われ、値を割り当てることはできません。たとえば、次のステートメントは不正です:
    SUN = 0; // SUNは列挙要素であり、このステートメントは不正です
  2. 列挙型にはデフォルト値があり、順番は0、1、2、...です。たとえば、上記の例では、SUNの値は0、MONは1、TUEは2、...、SATは6です。
  3. 次のように、宣言時に列挙要素の値を個別に定義することもできます
    。// SUNを7として定義し、MONを1として定義してから、1を順番に追加し、SATを6として追加します。
    列挙型平日{SUN = 7、MON = 1、TUE、WED、THU、FRI、SAT};
  4. 列挙型は、関係演算を実行できます。
  5. 整数値を列挙型変数に直接割り当てることはできません。整数を列挙型変数に割り当てる必要がある場合は、強制型変換を実行する必要があります。

2.例

#include <iostream>
using namespace std;

enum GameResult
{
    
    
	WIN,
	LOSE,
	TIE,
	CANCEL
};

int main(int argc, char* argv[])
{
    
    
	GameResult result; // 声明变量时,可以不写关键字 enum
	enum GameResult omit = CANCEL; // 也可以在类型前面写 enum

	for (int count = WIN; count <= CANCEL; count++) // 隐含类型转换
	{
    
    
		result = GameResult(count); // 显式类型转换
		if (result == omit)
		{
    
    
			cout << "The game was canceled." << endl;
		}
		else
		{
    
    
			cout << "The game was played";
			if (result == WIN)
			{
    
    
				cout << " and we won!";
			}
			else if (result == LOSE)
			{
    
    
				cout << " and we lost.";
			}
			else
			{
    
    
				cout << ".";
			}
			cout << endl;
		}
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/PursueLuo/article/details/104456792