C語言中的enum(枚舉類型)的使用

在實際編程中,有些數(shù)據(jù)的取值往往是有限的妆够,只能是非常少量的整數(shù),并且最好為每個值都取一個名字负蚊,以方便在后續(xù)代碼中使用神妹,比如一個星期只有七天,一年只有十二個月家妆,一個班每周有六門課程等鸵荠。

以每周七天為例,我們可以使用#define命令來給每天指定一個名字:

運行結果:

5↙

Friday

#define命令雖然能解決問題揩徊,但也帶來了不小的副作用腰鬼,導致宏名過多,代碼松散塑荒,看起來總有點不舒服熄赡。C語言提供了一種枚舉(Enum)類型,能夠列出所有可能的取值齿税,并給它們?nèi)∫粋€名字彼硫。

枚舉類型的定義形式為:

enum typeName{ valueName1, valueName2, valueName3, ...... };

enum是一個新的關鍵字,專門用來定義枚舉類型凌箕,這也是它在C語言中的唯一用途拧篮;typeName是枚舉類型的名字;

valueName1, valueName2, valueName3, ......是每個值對應的名字的列表牵舱。注意最后的;不能少串绩。

例如,列出一個星期有幾天:

enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };

可以看到芜壁,我們僅僅給出了名字礁凡,卻沒有給出名字對應的值,這是因為枚舉值默認從 0 開始慧妄,往后逐個加 1(遞增)顷牌;也就是說,week 中的 Mon塞淹、Tues ...... Sun 對應的值分別為 0窟蓝、1 ...... 6。

我們也可以給每個名字都指定一個值:

enum week{ Mon = 1, Tues = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6, Sun = 7 };

更為簡單的方法是只給第一個名字指定值:

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };

這樣枚舉值就從 1 開始遞增饱普,跟上面的寫法是等效的运挫。

枚舉是一種類型状共,通過它可以定義枚舉變量:

enum week a, b, c;

也可以在定義枚舉類型的同時定義變量:

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a, b, c;

有了枚舉變量,就可以把列表中的值賦給它:

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };

enum week a = Mon, b = Wed, c = Sat;

或者:

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a = Mon, b = Wed, c = Sat;

【示例】判斷用戶輸入的是星期幾滑臊。

運行結果:

4↙

Thursday

需要注意的兩點是:

1) 枚舉列表中的 Mon口芍、Tues、Wed 這些標識符的作用范圍是全局的雇卷,不能再定義與它們名字相同的變量鬓椭。

2) Mon、Tues关划、Wed 等都是常量小染,不能對它們賦值,只能將它們的值賦給其他的變量贮折。

枚舉和宏其實非常類似:宏在預處理階段將名字替換成對應的值裤翩,枚舉在編譯階段將名字替換成對應的值。我們可以將枚舉理解為編譯階段的宏调榄。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踊赠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子每庆,更是在濱河造成了極大的恐慌筐带,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缤灵,死亡現(xiàn)場離奇詭異伦籍,居然都是意外死亡,警方通過查閱死者的電腦和手機腮出,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門帖鸦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胚嘲,你說我怎么就攤上這事作儿。” “怎么了馋劈?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵立倍,是天一觀的道長。 經(jīng)常有香客問我侣滩,道長,這世上最難降的妖魔是什么变擒? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任君珠,我火速辦了婚禮,結果婚禮上娇斑,老公的妹妹穿的比我還像新娘策添。我一直安慰自己材部,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布唯竹。 她就那樣靜靜地躺著乐导,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浸颓。 梳的紋絲不亂的頭發(fā)上物臂,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音产上,去河邊找鬼棵磷。 笑死,一個胖子當著我的面吹牛晋涣,可吹牛的內(nèi)容都是我干的仪媒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谢鹊,長吁一口氣:“原來是場噩夢啊……” “哼算吩!你這毒婦竟也來了?” 一聲冷哼從身側響起佃扼,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤偎巢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后松嘶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘狭,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年翠订,在試婚紗的時候發(fā)現(xiàn)自己被綠了巢音。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡尽超,死狀恐怖官撼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情似谁,我是刑警寧澤傲绣,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站巩踏,受9級特大地震影響秃诵,放射性物質發(fā)生泄漏。R本人自食惡果不足惜塞琼,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一菠净、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦毅往、人聲如沸牵咙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洁桌。三九已至,卻和暖如春侯嘀,著一層夾襖步出監(jiān)牢的瞬間另凌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工残拐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留途茫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓溪食,卻偏偏與公主長得像囊卜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子错沃,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在實際編程中栅组,有些數(shù)據(jù)的取值往往是有限的,只能是非常少量的整數(shù)枢析,并且最好為每個值都取一個名字玉掸,以方便在后續(xù)代碼中使...
    踩在浪花上00閱讀 784評論 0 0
  • 本文摘自http://blog.csdn.net/skyflying2012/article/details/22...
    鷹擊司馬閱讀 1,094評論 0 0
  • 枚舉類型的目的 1.枚舉類型使代碼更具可讀性,理解清晰醒叁,易于維護 2.如果枚舉符號和對應的整數(shù)值發(fā)生變化司浪,只需修改...
    petit_prince閱讀 633評論 0 0
  • 本文包括:枚舉由來如何使用?枚舉類特性單例設計模式定義特殊結構枚舉星期輸出中文的案例枚舉類API 枚舉(enum)...
    廖少少閱讀 2,850評論 2 14
  • 一把沼、什么是枚舉啊易? 枚舉是由一組固定的常量組成的合法值。通過這一定義饮睬,我們可以看出枚舉的核心在于常量租谈,而且常量是固定...
    Roger_黃閱讀 964評論 0 4