在一些實際應用問題中,有些變量的取值被限定在一個有限的範圍內。例如一週只有七天,一年只有12個月等,能夠把此類變量定義爲枚舉類型。枚舉類型的定義中列舉出全部可能的取值,說明爲該枚舉類型的變量取值不能超過定義的範圍。·函數
注意:枚舉類型是一種基本的數據類型,而不是構造類型,由於枚舉類型變量只能取一個值,它也不能再分解爲任何類型。spa
1.定義code
定義枚舉類型的通常形式爲:blog
enum 枚舉名 { 枚舉常量表 } ;字符串
在枚舉常量表中應列出全部可用的常量,這些常量也稱爲枚舉元素。get
例如:class
enum weekday {sun, mou, tue, wed, thu, fri, sat } ;變量
該枚舉名爲weekday,枚舉元素有7個,凡是被說明爲weekday類型變量的取值只能是7天中的某一個值。數據類型
2.枚舉變量的說明程序
能夠先定義類型再說明變量,或者在定義類型的同時說明變量。
例如:
enum weekday {sun, mou, tue, wed, thu, fri, sat } ;
enum weekday d1, d2, d3 ;
或者:
enum weekday {sun, mou, tue, wed, thu, fri, sat } d1, d2, d3 ;
或者:
enum {sun, mou, tue, wed, thu, fri, sat } d1, d2, d3 ;
3.注意事項
1)不能在程序中用賦值語句對枚舉常量進行賦值。
例如sun=5; mon=2; sun=mon;都是錯誤的。
2)枚舉元素自己由系統定義了一個表示序號的數值,從0開始順序定義爲0,1,2,……。但也能夠在定義類型時改變枚舉元素的值。
例如:上面的weekday中,sun值爲0,mon值爲1,……
也能夠定義成:enum weekday {sun=7, mou, tue, wed, thu, fri, sat } ;,sun=7,mon=8,其後的元素值順序加1,sat=13。
3)能夠把枚舉常量賦給枚舉變量,但不能把元素的序號值賦給枚舉變量。
例如:
d1=sun;d2=mon;——正確。
d1=0; d2=1; ——錯誤。
若是必定要把數值賦值給枚舉變量,則必須用強制類型轉換。
例如:
d1= (enum weekday)2;
意義是將順序號爲2的枚舉元素賦給枚舉變量d1,至關於d1=tue;另外,枚舉元素不是字符常量也不是字符串常量,使用時不要加單、雙引號。
4)枚舉變量的值不能直接經過輸入函數從鍵盤上讀入,只能經過賦值語句或間接的輸入;也不能經過枚舉變量直接輸出其元素。
筆試中的一道題:
enum bg_color {BG_RED,BG_BLACK,BG_BLUE}; enum fg_color {FG_RED=2,FG_BLACK,FG_YELLOW,FG_GREEN}; int get(int type) { static int bc; static int fc=FG_BLACK;
if(type==0){return ++bc;} else{return ++fc;} } cout<<get(1)<<endl;
輸出:4
FG_BLACK、FG_YELLOW、FG_GREEN分別爲 3 、四、5.