C 教程

C 教程 C 语言简介 C 下载安装和环境配置 C 快速入门 C 语法 C 输出 C 注释 C 变量 C 数据类型 C 常量 C 运算符 C 布尔值 C If...Else 语句 C Switch 语句 C While 循环 C For 循环 C Break/Continue 语句 C 数组 C 字符串 C 用户输入 C 内存地址 C 指针

C 函数

C 函数 C 函数参数 C 作用域 C 函数声明 C 递归 C 数学函数

C 文件

C 创建文件 C 写入文件 C 读取文件

C 结构体

C 结构体 C 嵌套结构体 C 结构体和指针 C 联合体 C typedef

C 枚举

C 枚举

C 内存

C 内存管理

C 错误

C 错误 C 调试 C 空值 C 错误处理 C 输入验证

C 更多

C 日期 C 随机数 C 宏 C 代码组织 C 存储类 C 位运算符 C 固定宽度整数

C 项目

C 项目

C 参考资料

C 参考资料 C 关键词 C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C 标准库参考

C 标准库 - 参考手册 C 标准库 - <assert.h> C 标准库 - <ctype.h> C 标准库 - <errno.h> C 标准库 - <float.h> C 标准库 - <limits.h> C 标准库 - <locale.h> C 标准库 - <math.h> C 标准库 - <setjmp.h> C 标准库 - <signal.h> C 标准库 - <stdarg.h> C 标准库 - <stddef.h> C 标准库 - <stdio.h> C 标准库 - <stdlib.h> C 标准库 - <string.h> C 标准库 - <time.h>

C 实例

C 语言实例 C 经典100例 C 编译器 C 测验


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 = 25,
  MEDIUM = 50,
  HIGH = 75
};
printf("%d", myVar); // Now outputs 50
亲自试一试 »

请注意,如果您为某个特定项目赋值,则后续项目的编号也会相应更新。

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

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

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

当您有一些确定不会改变的值时,例如月份的日期、星期几、颜色、一副扑克牌等等,请使用枚举。