7.3 枚舉型和枚舉型變量
1.枚舉型
除數(shù)字、文字信息之外,還有專(zhuān)用名稱(chēng)信息,如反映電梯運(yùn)行狀態(tài)的有上(UP) ,下(DOWN) ,停(sTOP) ;又如表示星期幾的名稱(chēng)等。為提高程序描述問(wèn)題時(shí)的直觀性,引入枚舉型。程序用枚舉方法列舉一組標(biāo)識(shí)符作為枚舉型的值的集合。當(dāng)一個(gè)變量具有這種枚舉型時(shí),它就能取枚舉型的標(biāo)識(shí)將值。定義枚舉型的一般形式為
enum 枚舉型名 {枚舉常量1,枚舉常量2,……,枚舉常量n};
其中enum是枚舉型的引導(dǎo)字,枚舉型名是標(biāo)識(shí)符,枚舉常量也是用戶(hù)指定的標(biāo)識(shí)符,但它們被程序看作常量,習(xí)慣稱(chēng)它們?yōu)槊杜e常量。例如:
enum weekday { SUN, MON, TUE, WED, THU, FRI, SAT};
通常,每個(gè)枚舉常量都是有意義名稱(chēng)符號(hào),但對(duì)程序本身來(lái)說(shuō),這些枚舉常量并不自動(dòng)代表什么含義。例如,并不因?yàn)閷?xiě)成SAT就自動(dòng)表示“星期六”,不寫(xiě)SAT寫(xiě)成SATDAY或任何其它標(biāo)識(shí)符也是可以的。對(duì)于編譯系統(tǒng)來(lái)說(shuō),枚舉型中的標(biāo)識(shí)符只是一組互不相同的標(biāo)識(shí)符而已,標(biāo)識(shí)符本身的字面意義只是供閱讀程序的人便于理解程序。
為了便于處理枚舉型,編譯系統(tǒng)將每個(gè)枚舉常量與一個(gè)整數(shù)相聯(lián)系,即枚舉常量在內(nèi)部被視作一個(gè)整數(shù),值的大小由它們?cè)诿杜e型中出現(xiàn)的順序確定,依次為0,l,2,…。如在上面的定義中,SUN值為0,MON值為1,……,SAT值為6。枚舉型變量的值也可輸出。例如:
printf(“%d \n”, SUN);
將輸出整數(shù)0。
枚舉常量的對(duì)應(yīng)整數(shù)也可由程序直接指定。如
enum weekday { SUN= 7, MON= l, TUE, WED, THU, FRI, SAT};
指定SUN為7,MON為1,后面未指定對(duì)應(yīng)整數(shù)的枚舉常量所代表的整數(shù),則是前一個(gè)枚舉常量代表的整數(shù)加1。所以在上述定義中,TUE為2,……,SAT為6。
因枚舉常量代表一個(gè)整數(shù),同一枚舉型的變量、枚舉常量或整數(shù)相互間都可以作關(guān)系比較。
2.枚舉型變量
定義枚舉型變量也有以下多種方法:
(1)先定義枚舉型,然后定義枚舉型變量、枚舉型數(shù)組、枚舉型指針等。
(2)定義枚舉型同時(shí)定義枚舉型變量、枚舉型數(shù)組、枚舉型指針等。
(3)定義無(wú)名枚舉型同時(shí)定義枚舉型變量、枚舉型數(shù)組、枚舉型指針等。例如:
enum weekday today, yesterday, tomorrow;
enum { RED, YELLOW, BLUE } color;
定義枚舉型 enum weekday的變量 today,yesterday,tomorow;定義枚舉型變量 color。例如:
today=SUN; tomorrow = MON;
yesterday =SAT ; color= YELLOW;
使用枚舉型,除能命名見(jiàn)名議意的標(biāo)識(shí)符外,對(duì)標(biāo)識(shí)符值的內(nèi)部實(shí)現(xiàn),程序員可以不必考慮。另外,一個(gè)變量具有枚舉型,還能反映變量值的有限性。枚舉型變量常用于循環(huán)的控制變量,枚舉常量用于多路選擇控制的情況。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |