1. 枚舉類型是用來聲明代表整數常量的符號名稱。由此可見,枚舉類型與整數類型有着密切的聯繫,枚舉類型的常量均是int類型
的,它的存在主要是爲了提高程序的可讀性,後面的例子將會看到。通過enum關鍵字就可以創建一個新的“類型”並可以給它指
定具體的值。
【引申】sizeof(枚舉類型) = sizeof(int) = 4
2. 枚舉類型的聲明:
enum spectrum {red, green, blue, orange, black, yellow};
enum spectrum color;
【解釋】聲明一是借用enum關鍵字,常見新的類型enum spectrum,聲明二則是通過新的類型,創建它的變量,注意變量只能取得聲明一中所列出的幾個值。這方面似乎與結構體的語法十分類似。
3. 枚舉常量:
枚舉列表中的常量均有默認值,當然也可以用戶自己定義設置,如前面的幾種顏色,其值將分別是0,1,2,3,4,5等幾個整型值。若
出現只是對之間的一個常量賦值,而不對後面的常量賦值,那麼這些後面的常量會通過遞增自動被賦予值。
在實際的編程中,枚舉常量與整形常量可以混用,當然,整形常量中的一些禁忌同樣應該適用於枚舉常量,比如常量不能自加或者自減。
4. 強制轉換:
在GNU編譯器下,枚舉類型幾乎與整形類型通用,當然前提是能容納下,比如整形常量就可以直接賦值給枚舉變量。但是在VC編譯器下,則需要做強制轉換才行,否則就會出現編譯錯誤。
color tree = (color)5;
5. 枚舉常量的取值範圍:
給定幾個枚舉常量,如何計算出這個枚舉類型的取值範圍呢?
最大值:距最大值(指的是列舉出的常量最大值)最近的那個2的冪,並減去1。
如:
Enum number { a, b, c = 6, d = 23, e, f};
上面這個例子中的最大值爲23,而據其最近的2的冪爲32(2的5次冪),則需要5bit就可以容納,因此其最大值應該爲31(32-1)。
負數情況與上面的計算方法類似。
Enum number { a, b, c = -4, d =2 , e, f};
這個例子中的最大值爲4(-4的絕對值),需要3bit容納,另外加上一個符號位,需要4bit,其取值範圍是:1000-0111,即-8到7.