c語言枚舉類型enum

c語言枚舉類型

什么是枚舉呢?打個比方,比如我們一個星期有七天,從周一到周日這是固定不變的,不可能無端端的跳出一個星期八出來,在這種固定的情況下,我們?nèi)绻獙懸粋€程序去固定這七天,并且不讓別人亂修改,為了滿足這個需求,枚舉就誕生了。
所謂枚舉,是指將變量的值一一列舉出來,變量只限于列舉出來的值的范圍內(nèi)取值。

enum weekday{sun,mon,tue,wed,thu,fri,sat};
enum weekday day
  1. sun,mon被稱為枚舉元素或枚舉常量,他們是用戶定義的標識符
  1. 枚舉元素不是變量而是常量,因此枚舉元素又稱為枚舉常量。因為是常量,所以不能對枚舉元素進行賦值
  2. 枚舉元素作為常量,它們是有值的,c語言在編譯時按定義的順序使它們的值為0,1,2,比如day=tue;那么day的變量值則為2
  3. 如果在定義枚舉類型時指定元素的值,也可以改變枚舉元素的值,例如:enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};這時sun就為7了
  4. 枚舉型是一個集合,集合中的元素是一些命名的整型常量
  5. 枚舉類型是預(yù)處理指令#define的替代
  6. 類型定義以分號;結(jié)束
  7. 同一個程序中不能定義同名的枚舉類型,不同的枚舉類型中也不能存在同名的命名元素

DB_RegisterName這是一個我在看調(diào)試代碼的枚舉類型,里面有很多枚舉元素,并都自己指定了值,簡化后類似如下:

typedef enum  T_DB_RegisterName
{
    GPR0 = 0,
    GPR1 = 1,
    GPR2 = 2,
    GPR_SUM = 3,
    FGPR0 = 0,
    FGPR1 = 1,
    FGPR_SUM = 2,
    PCR = 0,
    MSR = 1,
    CR = 2,
    LR = 3,
    SPR_SUM = 4,
    REGISTER_SUM = GPR_SUM + FGPR_SUM + SPR_SUM,
    SP = GPR1,
    PC = GPR_SUM + FGPR_SUM*2 + PCR
}DB_RegisterName;

我們可以看到,這些枚舉元素都自己指定了值,并沒有用默認值,其次還有很多元素用了相同的值,比如GPR0和FGPR0的值都為0,那么他們兩個應(yīng)該是具有相同的意義!

后來又想了想,想起了一句話:枚舉類型是預(yù)處理指令#define的替代,也就是我們不過是同時#define GPR0 = 0;以及#define FGPR0 = 0;其實也就是便于代碼的可讀性而已,而不是簡簡單單的數(shù)字讓人摸不著頭腦。

枚舉類型我之前大學(xué)也學(xué)過,卻往往一知半解,最近調(diào)試ppc又剛好碰見了,順手記之。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在實際編程中,有些數(shù)據(jù)的取值往往是有限的,只能是非常少量的整數(shù),并且最好為每個值都取一個名字,以方便在后續(xù)代碼中使...
    踩在浪花上00閱讀 852評論 0 0
  • 本文摘自http://blog.csdn.net/skyflying2012/article/details/22...
    鷹擊司馬閱讀 1,215評論 0 0
  • 枚舉類型的目的 1.枚舉類型使代碼更具可讀性,理解清晰,易于維護 2.如果枚舉符號和對應(yīng)的整數(shù)值發(fā)生變化,只需修改...
    petit_prince閱讀 771評論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,190評論 1 10
  • 那樣的話我會給自己帶來很多麻煩。我把事情簡化為兩個選項,如果A不好,我就選B。但那不對。字母表里還有很多其他字母呢...
    不吃毛桃的英雄閱讀 1,059評論 0 0

友情鏈接更多精彩內(nèi)容