一、枚举
1、基本概念
三个的关系:枚举类型、枚举值、枚举变量
enum工具提供了另外一种创建符号常量的方式,某种程度上可代替const的作用。
enum spectrum {red,orange,yellow,green,blue,violet,ultraviolet};
spectrum:枚举,可以看作是一个新类型的名称
red,orange,yellow,green,blue,violet,ultraviolet:符号常量,对应的值为0-7,当然可以自定义初始值,没定义值的时候,默认后面比前面大1
spectrum band;//band 为枚举变量
2、特殊属性
①只能将枚举值赋值给枚举变量,因为对于枚举只定义了赋值运算符。
band = orange; //valid
++band; //not valid
band = orange + red ;
②枚举量是整型,可被提升为int类型,但是int类型不能自动转化为枚举类型
int color = blue; //valid
band = 3;//invalid
color = 3 + red ;//valid
③可以通过强制类型转换来实现合法值的转换
band = spectrum(3);
注意:如果值不合法的话,虽然不会报错,但是可能不会得到想要的结果。
3、设置枚举量的值
①指定的值必须为整数
②可以创建多个值相同的枚举量、
enum {zero,null=0,one,numero_uno=1};
4、枚举的取值范围
enum bits{one=1,two=2,four=4,eight=8};
bits myflag;
myflag=bits(6);//valid
6它不是枚举值,但是他在枚举定义的范围内。
上限值:大于枚举量最大值的、最小的2的次幂,再减去1
下限值:如果最小值不小于0,则下限为0,否则方式和上限值一样,但加上负号,如最小为-6,=》-8+1=-7