關於C 列舉型別enum

2022-06-21 03:18:10 字數 2285 閱讀 2844

一、何為列舉型別?

列舉型別(enumeration)是c++中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合。

宣告形式:

enum 列舉名 ;
例如:

enum weekday;
定義列舉資料型別變數,例如:

weekday myweekday;
(注意資料型別是weekday而不是enum weekday)

二、列舉型別應用說明

1,列舉元素具有預設數值,它們依次為:0,1,2,3,...。例如上例中sun的值為0,mon的值為1,tue為2,...,sat為6。

2, 也可以在宣告中另行定義列舉元素的值,如:

enum weekday;
定義sun為7,mon為1,以後順序加1,tue為2,wed為3,...,sat為6。

3, 對列舉元素按常量處理,但不能對它們直接賦予常量值。例如,下面的的語句是錯誤的:

sun=7;//sun是列舉元素,不能直接賦予常量值
如需要將整數附值給列舉變數,應進行強制型別轉換,例如:

sun=(weekday)7;//在值前面加(型別)是常用的強制型別轉換方法
4,列舉值可以進行關係運算:

1)可以使用關係運算子來比較兩個列舉變數。例如,以下 if 語句判斷儲存在 myweekday1中的值是否小於儲存在 myweekday中的值:

if ( myweekday1 < myweekday2)

如果 myweekday1儲存的值小於 myweekday2的值,則該語句為 true。否則該語句將為 false。

2)可以使用整數值而不是符號名稱來測試列舉變數。例如,以下兩個 if 語句是等效的:

if  myweekday== mon)

if ( myweekday == 1)

5, 如果為列舉變數賦值,則它們必須是整數。以下賦值語句將產生錯誤:

enum weekday; //錯誤

6, 列舉資料型別的目的之一是符號名稱有助於使程式自我解釋。但是,這些名稱不是字串,而是數值,所以在輸出時,輸出的是數字,而不是字串。例如:

weekday myweekday = sun;

cout << myweekday;//輸出的是0這個數值

輸入結果如下:

7, 列舉值可以賦給整型變數,例如:

int a;

a = sun;//列舉值可以賦給整形變數

cout << a;

8, 因為列舉資料型別的符號名稱與整數值相關聯,所以它們可以在 switch 語句中使用,如下面的程式所示:

題目:口袋中有紅,黃,藍,白,黑5種顏色球若干個。每次從口袋中取出3個不同顏色的球,問有多少種取法?

#includeusing namespace std;

void transfer(int i)//將相應的數值組合通過switch語句轉換為字串

}enum ball ;//定義球的列舉型別

int main()

{ int i, j, k,count=0;

for (int i = red; i <= black; i++)

{ for (int j = i+1; j <= black; j++)

{ for (int k =j+1; k <= black; k++)

{transfer(i);

transfer(j);

transfer(k);

cout 執行結果:

三,總結

當乙個變數有幾種可能的取值時,可以將它定義為列舉型別。列舉型別有利於程式的可讀性。對列舉元素按常量處理,列舉元素具有預設數值,但不能對它們直接賦予常量值。因為列舉變數是整數,所以也可以使用關係運算子來比較兩個列舉變數,並且通常配合switch語句來輸出相應的值。

關於C 列舉型別enum

一 何為列舉型別?列舉型別 enumeration 是c 中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合。宣告形式 enum 列舉名 例如 enum weekday 定義列舉資料型別變數,例如 weekday myweekday 注意資料型別是weekday而不是enum weekday...

C 列舉型別enum

關鍵字enum用於宣告列舉,列舉是一種值型別,由許多名字的常量 也叫列舉表 組成。例如 const int monday 0 const int tuesday 1 const sunday 7 可以用c 提供的列舉型別 enum week 列舉中每乙個常量都對應著乙個數值,如果不特別設定,列舉從0...

c 列舉 enum 型別

c 列舉 enum 型別 is2120 csdn 1.最平常的方法 public enum suits public void printallsuits z 2012 2 16 17 49 28 pm is2120 csdn 2.擴充套件方法 更通用,更方便一些 public static cla...