由 typedef 和 enum 關鍵字我們可以定義一個只能有某些值的型別。
這是 typedef 列舉型別的語法:
typedef enum {
//...values
} TYPENAME;
所創建的列舉型別通常是大寫。
以下是一個簡單的例子:
typedef enum {
true,
false
} BOOLEAN;
C 語言已經內建了 bool 型別,所以這個例子並不實用,但是你可以了解到這個概念。
另一個例子是定義星期幾:
typedef enum {
monday,
tuesday,
wednesday,
thursday,
friday,
saturday,
sunday
} WEEKDAY;
這是一個使用這個列舉型別的簡單程式:
#include <stdio.h>
typedef enum {
monday,
tuesday,
wednesday,
thursday,
friday,
saturday,
sunday
} WEEKDAY;
int main(void) {
WEEKDAY day = monday;
if (day == monday) {
printf("It's monday!");
} else {
printf("It's not monday");
}
}
列舉型別中的每個項目都會被對應到一個整數。所以在這個例子中,monday 對應到 0,tuesday 對應到 1,以此類推。
這意味著條件判斷也可以寫成 if (day == 0)
而不是 if (day == monday)
,但是我們人類更容易用名稱理解,而不是數字,所以這個語法非常方便。