C语言应用笔记:枚举变量的介绍及使用

在C语言中,枚举(enum是一种用户定义的数据类型,用于声明一组命名的整数常量,使代码更清晰、易读,特别是在线调试过程能直观的显示值的类型(不再是单纯的数值)。以下是枚举的详细用法和示例:

基本语法

enum 枚举名 { 
    枚举常量1, 
    枚举常量2, 
    // ...
} 变量列表;
  • 枚举常量:默认从 0 开始自动递增
  • 显式赋值:可以手动指定值,后续常量继续递增
  • 枚举变量:存储枚举常量的变量

使用示例

enum color {
    RED = 1,    // 手动赋值为1
    GREEN,      // 自动递增为2
    BLUE = 5,   // 手动赋值为5
    YELLOW      // 自动递增为6
};

int main(void) {
    enum color c = GREEN;
    printf("GREEN: %d\n", c); // 输出: 2
    c = YELLOW;
    printf("YELLOW: %d\n", c); // 输出: 6
    return 0;
}

枚举的高级用法

  1. 定义枚举类型变量
typedef enum { 
    OFF, 
    ON 
} switch_state;

int main(void) {
    switch_state s = ON; // 直接使用新类型名
    printf("State: %d\n", s); // 输出: 1
    return 0;
}
  1. 枚举在switch中的使用
// 定义枚举类型
typedef enum { 
    NORTH, 
    SOUTH, 
    EAST, 
    WEST 
}direction;

void print_direction(direction d) {
    switch(d) {
        case NORTH: printf("North\n"); break;
        case SOUTH: printf("South\n"); break;
        case EAST:  printf("East\n");  break;
        case WEST:  printf("West\n");  break;
        // 超出枚举范围,在嵌入式IDE(Keil)中可能会提示告警
        default:    printf("Invalid!\n");	
    }
}

int main(void) {
    print_direction(EAST); // 输出: East
    return 0;
}

注意事项

  1. 枚举本质是整数:枚举常量在编译时会被替换为整数值,可以直接参与整数运算
  2. 作用域规则:枚举常量在全局作用域生效,需避免命名冲突
  3. 类型安全:C语言中枚举变量本质是 int 类型,以下代码不会报错(但可能不符合逻辑):
direction t = 100;
原文链接:,转发请注明来源!