C枚舉類型小結
枚舉類型定義了一組常量,其本質爲整型。下面就以星期爲背景,對C中的枚舉做一個小結
枚舉的定義
enum WEEK{MON,TUE,WES,THR,FRI};
此代碼定義了一個名爲WEEK的枚舉類型,其中有周一到週五的5種不同的常量。這些常量本質上爲整型,可以賦值給其他整型變量或者賦值給一個WEEK類型的變量。枚舉變量的定義方法如下:
enum WEEK var = MON;
這裏定義了一個WEEK類型的變量var,並將其賦初值爲MON。此外,我們還可以將枚舉類型的定義和變量的聲明寫在一起,語法結構類似於結構體:
enum WEEK
{
MON, TUE, WES, THR, FRI
} myVar;
也可以在這基礎上直接賦值:
enum WEEK
{
MON, TUE, WES, THR, FRI
} myVar = TUE;
枚舉元素的值
枚舉元素的值本質上爲整型。對與枚舉中的每個元素的實際整型值,C是這樣處理的:
- 如果不人爲賦予這些元素初值,那麼這些元素的初值從0開始,然後依次遞增
- 如本例中,MON就是0,TUE就是1,以此類推
- 可以人爲的爲某些或全部元素賦初值,那麼這些元素的初值以人爲授予的值爲準
- 如果一個元素沒有人爲賦值,那麼它就是前者值加一
由於enum的本質就是整型,因此可以將元素直接賦值給一個int變量,也可以將任意一個數賦值給enum的變量。但是請注意,不要使用後者,因爲這會打破enum所代表的語義,enum變量攜帶的值應該爲此枚舉集合中元素的值。關於enum元素的使用,我們可以認爲它與“const int”類型的使用相同。