C++ 枚举 (enum)

C++ 枚举

enum(枚举)是一种特殊类型,表示一组常量(不可改变的值)。

要创建枚举,请使用 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;

  // 打印枚举变量
  cout << myVar;

  return 0;
}

亲自试一试

更改值

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

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

enum Level {
  LOW = 25,
  MEDIUM = 50,
  HIGH = 75
};
int main() {
  enum Level myVar = MEDIUM;
  cout << myVar;  // 现在输出 50
  return 0;
}

亲自试一试

请注意,如果您为某一特定项赋值,后续项将相应地更新其数值:

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:
      cout << "低级别";
      break;
    case 2:
      cout << "中级别";
      break;
    case 3:
      cout << "高级别";
      break;
  }
  return 0;
}

亲自试一试

为什么以及何时使用枚举?

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

当您拥有已知不会改变的值时,请使用枚举,例如月份的天数、星期几、颜色、一副扑克牌等。