C 枚举 (enum)
C 枚举
枚举 (enum) 是一种特殊类型,它表示一组常量(不可更改的值)。
要创建枚举,请使用 enum 关键字,后跟枚举名称,并用逗号分隔枚举项:
enum Level {
LOW,
MEDIUM,
HIGH
};
请注意,最后一项不需要逗号。
虽然不强制要求使用大写字母,但通常认为使用大写字母是一种良好的编程习惯。
Enum 是"enumerations"(枚举)的缩写,意思是"具体列出"。
要访问枚举类型,必须创建一个包含该枚举类型的变量。
在 main() 方法中,指定 enum 关键字,后面是枚举名称(Level),然后是枚举变量名称(在本例中为myVar):
enum Level myVar;
现在您已经创建了一个枚举变量 (myVar),您可以为其赋值。
赋值必须是枚举中的三个元素之一(LOW、MEDIUM 或 HIGH):
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 = 5,
MEDIUM, // Now 6
HIGH // Now 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;
}
亲自试一试 »
使用枚举类型定义
您还可以将 typedef 与 enum 一起使用。
这样可以更轻松地声明枚举类型的变量,而无需每次都编写 enum:
示例
// Without typedef
enum Day {MON, TUE, WED, THU, FRI, SAT, SUN};
enum Day today = WED;
// With typedef
typedef enum {MON, TUE, WED, THU, FRI, SAT, SUN} Day;
Day today = WED;
两种版本功能相同,但typedef版本更简洁易读:
示例
#include <stdio.h>
typedef enum {MON, TUE, WED, THU, FRI, SAT, SUN} Day;
int main() {
Day today = WED;
if (today == WED) {
printf("It is Wednesday!
");
}
return 0;
}
亲自试一试 »
为什么以及何时使用枚举?
枚举用于为常量命名,这使得代码更易于阅读和维护。
当您有一些确定不会改变的值时,例如月份的日期、星期几、颜色、一副扑克牌等等,请使用枚举。

