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