在實際應用中,有的變數只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 C 語言中對這樣取值比較特殊的變數可以定義爲列舉型別。所謂列舉是指將變數的值一一列舉出來,變數只限於列舉出來的值的範圍內取值。
定義一個變數是列舉型別,可以先定義一個列舉型別名,然後再說明這個變數是該列舉型別。
例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
定義了一個列舉型別名 enum weekday,然後定義變數爲該列舉型別。例如:
enum weekday day;
當然,也可以直接定義列舉型別變數。例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat} day;
其中,sum,mon,…,sat 等稱爲列舉元素或列舉常數,它們是使用者定義的識別符號。
需要說明的有以下幾點:
① 列舉元素不是變數,而是常數,因此列舉元素又稱爲列舉常數。因爲是常數,所以不能對列舉元素進行賦值。
② 列舉元素作爲常數,它們是有值的,C 語言在編譯時按定義的順序使它們的值爲,1,2,…。
在上面的說明中,sun 的值爲 0,mon 的值爲 1,…sat 的值爲 6,如果有賦值語句
day=mon;
則 day 變數的值爲 1。當然,這個變數值是可以輸出的。例如:
printf ("%d", day);
將輸出整數 1。
如果在定義列舉型別時指定元素的值,也可以改變列舉元素的值。例如: