c++枚舉類型

枚舉類型(enumeration)是C++中的一種派生數據類型,它是由用戶定義的若干枚舉常量的集合。

基本介紹

  • 中文名:c++枚舉類型
  • 外文名:c++ enumeration
  • 前提條件:一個變數只有幾種可能的值
  • 實質:將變數的值一一列舉出來
基本概念,聲明,實例,說明,

基本概念

如果一個變數只有幾種可能的值,可以定義為枚舉(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 <iostream>
#include <iomanip>//在輸出時要用到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<=black;i++)//當i為某一顏色時
for (j=red;j<=black;j++)//當j為某一顏色時
if (i!=j)//若前兩個球的顏色不同
{ for (k=red;k<=black;k++)//只有前兩個球的顏色不同,才需要檢查第3個球的顏色
if ((k!=i) && (k!=j))//3個球的顏色都不同
{n=n+1;//使累計值n加1
cout<<setw(3)<<n;//輸出當前的n值,欄位寬度為3
for (loop=1;loop<=3;loop++)//先後對3個球作處理
{switch (loop)//loop的值先後為1,2,3
{case 1: pri=color(i);break ;//color(i)是強制類型轉換,使pri的值為i
case 2: pri=color(j);break ;//使pri的值為j
case 3: pri=color(k);break ;//使pri的值為k
default :break ;
}
switch (pri)//判斷pri的值,輸出相應的“顏色”
{case red: cout<<setw(8)<<″red″; break;
case yellow: cout<<setw(8)<<″yellow″;break;
case blue:cout<<setw(8)<<″blue″; break ;
case white:cout<<setw(8)<<″white″; break ;
case black:cout<<setw(8)<<″black″; break ;
default : break ;
}
}
cout<<endl;
}
}
cout<<″total:″<<n<<endl;//輸出符合條件的組合的個數
return 0;
}
運行結果
1 red yellow blue 2 red yellow white 3 red yellow black
58 black white red
59 black white yellow
60 black white blue
total:60

說明

不用枚舉常量,而用常數0代表“紅”,1代表“黃”……也可以。但顯然用枚舉變數更直觀,因為枚舉元素都選用了令人“見名知意”的標識符,而且枚舉變數的值限制在定義時規定的幾個枚舉元素範圍如果賦予它一個其他的值,就會出現出錯信息,便於檢查。

相關詞條

熱門詞條

聯絡我們