C 枚举(enum)
枚举用于定义一组命名的整型常量,使代码更具可读性与可维护性。
1. 定义与使用
c
enum Color { RED=1, GREEN=2, BLUE=3 };
enum Color c = RED;
if (c == GREEN) { /* ... */ }2. 默认值与递增
未显式赋值时,枚举常量从 0 开始依次递增:
c
enum Week { MON, TUE, WED, THU, FRI, SAT, SUN };3. 作用域与命名
- 枚举标签(Color)与枚举常量(RED 等)处于标识符命名空间
- 建议为不同枚举选择不同的前缀或作用域管理
4. 大小与兼容性
- 枚举底层表示为整型(实现相关)
- 与
int可相互赋值(需注意范围与警告)
5. 位标志(建议用宏或自定义整型)
c
enum Flags { F_A=1<<0, F_B=1<<1, F_C=1<<2 };6. 示例
c
#include <stdio.h>
enum State { S_INIT, S_RUN, S_STOP };
const char* to_str(enum State s) {
switch (s) {
case S_INIT: return "INIT";
case S_RUN: return "RUN";
case S_STOP: return "STOP";
default: return "?";
}
}
int main(void) {
enum State s = S_RUN;
printf("%s\n", to_str(s));
return 0;
}7. 小结
用枚举替代魔法数字,提升代码表达力;注意与整型的隐式转换带来的潜在问题。