C语言枚举类型的介绍
使用 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) ,但对我们人类来说,用名字而不是数字来推理更简单,所以这是一种非常方便的语法。