Skip to content

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. 小结

用枚举替代魔法数字,提升代码表达力;注意与整型的隐式转换带来的潜在问题。

本站内容仅供学习和研究使用。