C++枚舉類型

C++ 枚舉類型


枚舉類型 enum

某些情況下,數據的取值只有有限的幾種可能。比如一場比賽只有勝、負、平局、比賽取消 4 種情況,一週只有 7 天等。雖然可以使用 int、char 類型來表示它們,但是對數據的合法性檢查卻是一件麻煩的事情。那麼,有沒有一種數據類型只有有限的幾種取值,並且能自動檢查數據合法性呢?答案是有的。 C++ 中的枚舉類型就是專門用來解決這類問題的。

語法:

enum 枚舉類型名稱 {變量值列表};

例如:

enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};

枚舉類型應用說明:

  1. 對枚舉元素按常量處理,不能對它們賦值。例如,下面的語句是非法的:
    SUN = 0; // SUN 是枚舉元素,此語句非法
    
  2. 枚舉類型具有默認值,它們依次爲:0,1,2,…。例如,上例中 SUN 的值爲 0, MON 爲 1,TUE 爲 2,…,SAT 爲 6。
  3. 也可以在聲明時另行定義枚舉元素的值,如:
    enum Weekday {SUN = 7, MON = 1, TUE, WED, THU, FRI, SAT};
    
    定義 SUN 爲 7,MON 爲 1,以後順序加 1,SAT 爲 6。
  4. 枚舉類型可以進行關係運算。
  5. 整數值不能直接賦給枚舉變量,如需要將整數賦值給枚舉變量,應進行強制類型轉換。

一個示例

#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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章