Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C 枚举 (enum)


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 语句中,以检查相应的 value

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;
}
自己试试 »

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

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

当您有确定不会更改的值时使用枚举,例如月份、星期、颜色、一副牌等。


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.