C 语言中的 enum

我们有些时候需要使用一些固定的名称来代表固定的数值,比如在计算你的课程成绩的时候,有的课程会出现用英文字母 A-F 来打分,这个时候你需要换算为一个固定的分值来计算平均分。要实现这个功能,你可以选择在程序的开始定义一系列的常量,但是这样的定义会非常繁琐,而且不方便维护。这个时候就出现了一种变量的类型,枚举。

1. 声明 enum

声明一个枚举类型,可以采用关键字 enum 加上一个自定义的名称,再加上一系列的枚举值。

enum Score{
    A = 5,
    B = 4,
    C = 3,
    D = 2,
    E = 1,
    F = 0
};

当让你也可以采用其默认值,默认情况下,枚举的数值是整数 0 开始的,然后递加 1 。

enum Score{F, E, D, C, B, A};

这个定义的枚举和之前介绍的那个效果是一致的。

同时你还可以采用默认值与自定义值混合的方式来定义一个枚举。

enum Score{
    E = 1,
    F,
    D = 5,
    C,
    B = 0,
    A
};

在上面的定义中, E 的值为 1 , F 的值为 2 , D 的值为 5 , C 的值为 6 , B 的值为 0 , A 的值为 1 。

2. 使用 enum

一旦定义了一个 enum 那么其值是不能被改变的。使用起来如同查字典一样,通过一个字符或者字符串来取得对应的数值。

3. 示例程序

#include <stdio.h>

int main()
{
    enum Score
    {
        A = 5,
        B = 4,
        C = 3,
        D = 2,
        E = 1,
        F = 0
    };

    enum Score score1, score2, score3;

    score1 = A;
    score2 = F;
    score3 = D;

    printf("score1: %d, score2: %d, score3: %d\n", score1, score2, score3);

    return 0;
}

运行结果:

score1: 5, score2: 0, score3: 2

程序中声明了一个枚举类型,用来映射不同的成绩。使用过程中声明了 3 个变量,然后对变量赋值。这个过程就是一个映射的过程。当对变量赋值后,变量中存储的就是整数。最后,我们将变量中的值输出。

4. 小结

对于枚举其实和之前定义常量是一致的,一旦定义就不能修改或者再次定义。如果尝试修改或者再次使用之前定义中的枚举值,就会出现编译错误。

5. 参考文献