C语言枚举类型的介绍

260 阅读1分钟

C语言枚举类型的介绍

使用 typedefenum 关键字,我们可以定义一个可以有一个或另一个值的类型。

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