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