什么是枚举
枚举(enum)
C/C++语言可以使用 #define 和 const 创建符号常量,enum也可以做到,并且很方便的用来定义常量。
定义: enum 类型名(枚举类型名称) { 枚举元素列表 };
类似于我们定义一个新的数组:int Array [20] (创建一个容量为 20 的一维整型数组,数组名称为 Array);
enum是定义了一个新的类型
进一步了解枚举
接下来我将通过举例来帮助你更好的了解枚举(enum)
彩虹有七种颜色:红、橙、黄、绿、蓝、靛、紫。
//用枚举定义彩虹
enum rainbow {red,orange, yellow, green, blue, violet, indigo, violet}; //(枚举元素为常量)
这条语句有两个作用:
- rainbow成为新类型的名称;rainbow被称为枚举
- red, orange, yellow 等将作为常量符号,默认对应的值为0~6(从0开始默认赋值,依次递增1)
枚举的规则
//用枚举定义彩虹
enum rainbow {red,orange, yellow, green, blue, violet, indigo, violet};
//用枚举名来声明这种类型的变量
rainbow color;
color = blue; //这是合法的
color = 100; //这是非法的
color = 4; //这是合法的
rainbow 变量受限制,只有默认的 0~6 共七个值,将取值范围之外的值赋值给color是非法的
设置枚举的值
//可以用赋值运算符来显示地设置枚举量的值
enum rainbow {red = 1,orange, yellow = 4, green, blue, violet = 8, indigo, violet};
没有被赋值的枚举量将比其前面的枚举量大1
orange = 2 green = 5 indigo = 9 violet = 10
//可以设置多个相同的枚举量
enum rainbow {red,orange = 0, yellow, green = 1, blue};
red 和 orange 为 0,yellow 和 green 为 1,blue 为 2
枚举的取值范围
C++通过强制转换,增加了可赋值给枚举变量的合法值
即:每个枚举都有取值范围,通过强制转换,可以将取值范围内的任何整数赋值给枚举变量,即便这个值不是枚举值
枚举取值范围定义如下:
上限:知道枚举量的最大值,找到大于这个最大值的 2^n 的数并将它减1
下限:知道枚举量的最小值,找到小于这个最小值的 2^n 的数并将它减1(如果最小值不小于0,则下限取值范围为0)
示例如下:
enum Num {one = 1, two = 2, eight = 8};
Num ten;
Num已知最大值为 8,则在 2^n 中比这个数大的最小值为16,即取值上限为 16 - 1 = 15
所以Num的取值范围为 0 ~ 15
若 one = - 5,即枚举最小量为-5,则取值下限为 -(8-1) = -7