3.列舉

2020-08-12 14:33:24

 

 

在實際應用中,有的變數只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 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。 

如果在定義列舉型別時指定元素的值,也可以改變列舉元素的值。例如: