C 枚举

C 枚举

C 语言中的枚举是一种特殊类型,它代表了一组常量(不可改变的值)。

要创建枚举,请使用 enum 关键字,后跟枚举名称,并用逗号分隔枚举项:

enum Level {
  LOW,
  MEDIUM,
  HIGH
};

请注意,最后一项不需要逗号。

虽然并不要求使用大写字母,但通常认为这是一个好的做法。

Enum 是 "enumerations" 的缩写,意思是“具体列出的”。

要访问枚举,您必须创建一个该枚举类型的变量。

main() 方法中,指定 enum 关键字,后跟枚举的名称(Level),然后是枚举变量的名称(本例中为 myVar):

enum Level myVar;

现在,您已经创建了一个枚举变量(myVar),可以为其分配一个值。

分配的值必须是枚举内部的一项(LOWMEDIUMHIGH):

enum Level myVar = MEDIUM;

默认情况下,第一项 (LOW) 的值为 0,第二项 (MEDIUM) 的值为 1,依此类推。

如果您现在尝试打印 myVar,它将输出 1,代表 MEDIUM

int main() {
  // 创建一个枚举变量并为其赋值
  enum Level myVar = MEDIUM;

  // 打印枚举变量
  printf("%d", myVar);

  return 0;
}

亲自试一试

更改值

如您所知,枚举的第一项的值为 0。第二项的值为 1,依此类推。

为了使这些值更有意义,您可以轻松更改它们:

enum Level {
  LOW = 25,
  MEDIUM = 50,
  HIGH = 75
};
printf("%d", myVar); // 这次输出 50

亲自试一试

请注意,如果您为某一特定项分配了一个值,则后续项会相应地更新其数字:

enum Level {
  LOW = 5,
  MEDIUM, // 现在为 6
  HIGH // 现在为 7
};

亲自试一试

枚举在 switch 语句中的使用

枚举经常用在 switch 语句中来检查对应的值:

enum Level {
  LOW = 1,
  MEDIUM,
  HIGH
};

int main() {
  enum Level myVar = MEDIUM;

  switch (myVar) {
    case 1:
      printf("Low Level");
      break;
    case 2:
      printf("Medium level");
      break;
    case 3:
      printf("High level");
      break;
  }
  return 0;
}

亲自试一试

为何以及何时使用枚举?

枚举用于为常量命名,这使得代码更易于阅读和维护。

当您有一些您知道不会更改的值时,比如月份的天数、星期几、颜色、一副牌等,就应该使用枚举。