枚舉類型


 

在一些實際應用問題中,有些變量的取值被限定在一個有限的范圍內。例如一周只有七天,一年只有12個月等,可以把此類變量定義為枚舉類型。枚舉類型的定義中列舉出所有可能的取值,說明為該枚舉類型的變量取值不能超過定義的范圍。·

注意:枚舉類型是一種基本的數據類型,而不是構造類型,因為枚舉類型變量只能取一個值,它也不能再分解為任何類型。

 

1.定義

定義枚舉類型的一般形式為:

enum 枚舉名 { 枚舉常量表 } ;

在枚舉常量表中應列出所有可用的常量,這些常量也稱為枚舉元素。

例如:

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 、4、5.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM