/

C 列舉型別

C 列舉型別

由 typedef 和 enum 關鍵字我們可以定義一個只能有某些值的型別。

這是 typedef 列舉型別的語法:

1
2
3
typedef enum {
//...values
} TYPENAME;

所創建的列舉型別通常是大寫。

以下是一個簡單的例子:

1
2
3
4
typedef enum {
true,
false
} BOOLEAN;

C 語言已經內建了 bool 型別,所以這個例子並不實用,但是你可以了解到這個概念。

另一個例子是定義星期幾:

1
2
3
4
5
6
7
8
9
typedef enum {
monday,
tuesday,
wednesday,
thursday,
friday,
saturday,
sunday
} WEEKDAY;

這是一個使用這個列舉型別的簡單程式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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),但是我們人類更容易用名稱理解,而不是數字,所以這個語法非常方便。

tags: [“C”, “Enumerated Types”, “typedef”]