介绍
枚举(enum) 是 C 语言中一种自定义数据类型,用来定义一组有名字的整型常量,让代码更易读、更规范,专门用来表示固定范围的取值(比如星期、颜色、性别、状态等)。
一、基础语法
1. 定义枚举类型
// 格式
enum 枚举名 {
枚举常量1,
枚举常量2,
枚举常量3,
...
};
2. 定义枚举变量
有两种写法:
// 写法1:先定义类型,再定义变量
enum 枚举名 变量名;
// 写法2:定义类型时直接定义变量
enum 枚举名 {
常量列表
} 变量名;
二、最简单示例:表示星期
#include <stdio.h>
// 定义枚举类型:星期
enum Weekday {
MON, // 0
TUE, // 1
WED, // 2
THU, // 3
FRI, // 4
SAT, // 5
SUN // 6
};
int main() {
// 定义枚举变量
enum Weekday today = WED;
// 枚举本质是整数,直接打印会输出对应数值
printf("今天是星期:%d\n", today); // 输出 2
return 0;
}
枚举常量默认值规则
- 默认从 0 开始依次递增
- 你也可以手动指定值,后面未指定的会自动顺延
enum Weekday {
MON = 1, // 手动指定从1开始
TUE, // 2
WED, // 3
...
};
三、枚举的核心特点
- 枚举常量本质是
int整型- 可以直接赋值给 int 变量
- 可以参与运算、比较
- 枚举变量只能取枚举列表里的值(规范用法)
- 提高代码可读性
- 用
RED比用0更直观 - 用
OPEN比用1更清晰
- 用
四、常用实用示例
示例1:表示颜色
enum Color {
RED,
GREEN,
BLUE
};
enum Color c = GREEN;
示例2:表示状态(非常常用)
enum State {
STOP,
RUN,
PAUSE
};
enum State machine = RUN;
五、枚举和宏定义(#define)的区别
| 方式 | 优点 | 缺点 |
|---|---|---|
| 枚举 enum | 分组管理、自动赋值、类型安全 | 必须是整型 |
| #define | 灵活,可以定义任意常量 | 零散、无类型、不易维护 |
开发中优先用枚举,因为更规范、更易读。
六、高级用法:typedef 简化枚举
用 typedef 可以给枚举起别名,不用每次写 enum:
// 定义 + 重命名
typedef enum {
MON,
TUE,
WED
} Weekday;
// 直接使用别名
Weekday today = TUE;
这是实际项目中最常用的写法。
总结
- 枚举 = 一组有名字的整型常量
- 用来表示固定取值:星期、颜色、状态、方向等
- 默认从 0 开始,可手动指定值
- 本质是 int,可直接打印数值
- 用
typedef可以简化写法,不用写enum关键字
需要我给你写一个枚举+switch 分支的完整实战代码吗?这是枚举最常用的场景。