基本概念
如果一個變數只有幾種可能的值,可以定義為枚舉(enumeration)類型。所謂“枚舉”是指將變數的值一一列舉出來,變數的值只能在列舉出來的值的範圍內。聲明枚舉類型用enum開頭。
例如
enum weekday{sun,mon,tue,wed,thu,fri,sat};
上面聲明了一個枚舉類型weekday,花括弧中sun,mon,…,sat等稱為枚舉元素或枚舉常量。
表示這個類型的變數的值只能是以上7個值之一。它們是用戶自己定義的標識符。
聲明
聲明枚舉類型的一般形式
enum 枚舉類型名 {枚舉常量表列};
在聲明了枚舉類型之後,可以用它來定義變數。
如
weekday workday,week_end;
這樣,workday和week_end被定義為枚舉類型weekday的變數。
在C語言中,枚舉類型名包括關鍵字enum,以上的定義可以寫為
enum weekday workday,week_end;
根據以上對枚舉類型weekday的聲明,枚舉變數的值只能是sun到sat之一。
例如
workday=mon; week_end=sun; 是正確的。
直接定義枚舉變數
enum{sun,mon,tue,wed,thu,fri,sat} workday,week_end;
這些標識符並不自動地代表什麼含義。
說明:
(1) 對枚舉元素按常量處理,故稱枚舉常量。
(2) 枚舉元素作為常量,它們是有值的,C++編譯按定義時的順序對它們賦值為0,1,2,3,…。也可以在聲明枚舉類型時另行指定枚舉元素的值。
(3) 枚舉值可以用來做判斷比較。
(4) 一個整數不能直接賦給一個枚舉變數。
實例
題目
口袋中有紅、黃、藍、白、黑5種顏色的球若干個。每次從口袋中任意取出3個球,問得到3種不同顏色的球的可能取法,輸出每種排列的情況。
程式
#include
#include //在輸出時要用到setw控制符
using namespace std;
int main( )
{ enum color {red,yellow,blue,white,black};//聲明枚舉類型color
color pri;//定義color類型的變數pri
int i,j,k,n=0,loop;//n是累計不同顏色的組合數
for (i=red;i