枚举(enum)在C语言中的使用

枚举(enum)是C语言中一种用户定义的数据类型,用于给整数值赋予有意义的名称,使代码更易读和维护。

基本语法

enum 枚举名 {
    枚举元素1,
    枚举元素2,
    ...
};

简单示例

#include 

// 定义一个表示星期的枚举
enum Weekday {
    MONDAY,    // 默认值为0
    TUESDAY,   // 1
    WEDNESDAY, // 2
    THURSDAY,  // 3
    FRIDAY,    // 4
    SATURDAY,  // 5
    SUNDAY     // 6
};

int main() {
    enum Weekday today = WEDNESDAY;
    
    if (today == WEDNESDAY) {
        printf("今天是星期三\n");
    }
    
    printf("星期三的值是: %d\n", WEDNESDAY);
    
    return 0;
}

自定义枚举值

enum Color {
    RED = 1,
    GREEN = 2,
    BLUE = 4,
    YELLOW = RED + GREEN  // YELLOW = 3
};

使用typedef简化

typedef enum {
    OFF,
    ON
} SwitchState;

int main() {
    SwitchState light = ON;
    // ...
}

枚举与switch语句结合

enum Operation {
    ADD,
    SUBTRACT,
    MULTIPLY,
    DIVIDE
};

void calculate(enum Operation op, int a, int b) {
    switch(op) {
        case ADD:
            printf("%d + %d = %d\n", a, b, a + b);
            break;
        case SUBTRACT:
            printf("%d - %d = %d\n", a, b, a - b);
            break;
        case MULTIPLY:
            printf("%d * %d = %d\n", a, b, a * b);
            break;
        case DIVIDE:
            if (b != 0)
                printf("%d / %d = %d\n", a, b, a / b);
            else
                printf("除数不能为0\n");
            break;
        default:
            printf("未知操作\n");
    }
}

枚举的大小

在C语言中,枚举类型的大小通常是int的大小(通常是4字节),因为它实际上存储的是整数值。

printf("enum Weekday size: %zu bytes\n", sizeof(enum Weekday));

注意事项

  1. 枚举元素是常量,不能修改

  2. 不同枚举中的枚举元素名称不能相同

  3. 枚举本质上是整数,可以直接与整数比较

  4. 枚举可以提高代码可读性,但不会增加类型安全性(编译器不会阻止你将任意整数值赋给枚举变量)

你可能感兴趣的:(C语言,c语言,算法,数据结构,开发语言,嵌入式硬件,单片机,stm32)