C语言-3-枚举类型
摘要
枚举类型(enumerated type),顾名思义,便是将有可能取到的值一一列举并放入一个集合之中,这个集合便可以视作枚举类型。
使用enum关键字,可以创建一个新“类型”并指定它可具有的值,这种类型就叫枚举类型。
例如将一个星期作为集合,它的取值只能是周一到周日,我们便可以使用枚举类型来进行定义,它的语法与结构体类型的语法类似。
代码实现
代码1:创建枚举类型
1 | enum Day{ |
分析
- enum Day 这个声明创建了一个Day作为标记名,允许将enum Day作为一个类型名进行使用。
- 花括号内的7个标识符枚举了enum Day变量可以取到的所有值。因此,用enum Day创建的变量可以取Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday共7个值。这7个值被称为枚举符(enumerator),又称枚举常量,从技术层面上来讲,枚举常量是int类型的常量。同样,枚举常量也可以被理解成为有名称的常量。只要是在能够用到整型常量的地方就能用到枚举常量,例如定义数组时,数组成员个数就能用枚举常量来带入;switch语句中,case后面的整型常量可以用枚举常量。
代码2:枚举类型的初始化
运行结果1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
enum data{
high,
weight,
feture = 50,
weath
}element = weight;
int main()
{
printf(" element = %d\n high = %d\n weight = %d\n feture = %d\n weath = %d\n\n\n", element, high, weight, feture, weath);
element = feture;
printf(" element = %d\n high = %d\n weight = %d\n feture = %d\n weath = %d\n", element,high,weight,feture,weath);
return 0;
}
分析
- 在声明枚举类型时可以进行顺道定义enum data类型的变量element并且可以在主函数中对于element的值进行修改,element的取值仅限于 high, weight, feture, weath, 不能用整数对于element进行赋值,原因在于element的数据类型是 enum data,必须同样用enum data类型的值对它赋值,故不能用int等整型对其赋值
- 在声明枚举类型时可以对枚举常量的值进行初始化,如上面的feture=50。若不初始化,默认第一个high数值为0,第二个数值weight为1,以此类推;碰到被人为初始化的值后,其再后面一个枚举常量的值也同样是依次加1,如feture为50,weath为51
枚举类型的作用
1.提高程序的可读性和可维护性,用有含义的枚举常量来代替无含义数字
2.和#define定义的标识符相比,枚举常量有类型检查,更加严谨
3.防止了命名污染
4.便于调试
5.定义方便,一次可以定义多个常量
注意:
不能在两个枚举类型中使用相同的枚举常量名称,否则会报出重定义的错误
参考文献
C Primer Plus,第六版, p474-477
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 danteking!