C++ 枚舉類型
枚舉類型 enum
某些情況下,數據的取值只有有限的幾種可能。比如一場比賽只有勝、負、平局、比賽取消 4 種情況,一週只有 7 天等。雖然可以使用 int、char 類型來表示它們,但是對數據的合法性檢查卻是一件麻煩的事情。那麼,有沒有一種數據類型只有有限的幾種取值,並且能自動檢查數據合法性呢?答案是有的。 C++ 中的枚舉類型就是專門用來解決這類問題的。
語法:
enum 枚舉類型名稱 {變量值列表};
例如:
enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};
枚舉類型應用說明:
- 對枚舉元素按常量處理,不能對它們賦值。例如,下面的語句是非法的:
SUN = 0; // SUN 是枚舉元素,此語句非法
- 枚舉類型具有默認值,它們依次爲:0,1,2,…。例如,上例中 SUN 的值爲 0, MON 爲 1,TUE 爲 2,…,SAT 爲 6。
- 也可以在聲明時另行定義枚舉元素的值,如:
定義 SUN 爲 7,MON 爲 1,以後順序加 1,SAT 爲 6。enum Weekday {SUN = 7, MON = 1, TUE, WED, THU, FRI, SAT};
- 枚舉類型可以進行關係運算。
- 整數值不能直接賦給枚舉變量,如需要將整數賦值給枚舉變量,應進行強制類型轉換。
一個示例
#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;
}