C++枚举类型详细介绍
在具体的编程工作当中,枚举类型多用来创建常量,取代const。
1. 声明枚举类型
1 | enum color{red,orange,yellow,green,blue}; |
声明枚举类型之后我们要知道他里面储存的值是多少,在默认的情况下枚举值是从0依次递增的,当然我们也可一给他赋值:1
enum color{red=100,orange,yellow,green,blue};
red=100之后,理所当然后面的值也应该递增,orange=101,yellow=102,green=103,blue=104。如果是这种情况呢?:1
color{red=100,orange,yellow=200,green,blue};
这种情况下,orange的值是101,green=201,blue=202
2. 创建枚举类型和枚举运算符
声明枚举之后我们可以创建枚举类型:
1 | color band;//band is a color type var |
关于枚举类类型运算符,我们可以将一个枚举值赋给另一个枚举类型,但不能将一个非枚举类型的变量付给枚举类型:1
2
3int a=200;
red=blue;// the way is ok
red=a;//the way is bad
但是可以通过强制类型转换,来将一个常规变量值强制赋给枚举:
1 red=(color)30;
如果我们将非枚举类型a强制赋值给枚举类型red,有的编译器会报错,而有的会发出警告,具体的依据编译器而定。但是将一个枚举类型的值赋给一个常规变量是可以行的,比如将他提升为一个int类型:1
int b= blue;//pass
对于枚举类型,只可以使用赋值运算符,不能对其使用算术运算符,例如下面的方式不可取:
1 | band=red+green;//no pass |
3. 匿名枚举
创建:
1 | enum {number=2015};//build a number constant |
在具体的开发工作当中,多使用这样的方式来代替const关键字创建常理
4. 枚举的取值范围
C++通过强制类型转换,可以将一个和法值赋给枚举,每个枚举值都是有取值范围的
取值范围的定义:
首先找出上限,找出枚举量的最大值,找到大于这个最大值、最小的2的幂,在将它减去1,得到的就是枚举取值范围的上限,例如:1
enum bits{one=-7,two=2,four=4,eight=8};
上面的代码当中,最大值为8,大于这个最大值2的最小幂为16,即这个枚举的取值上限为15;最大值已经找到,那最小值呢?
关于最小值,原理和最大值的需找方法是一样的
在枚举bits当中,最小值为-7,比它小,最大的2的幂是-8,则下限为-7,取值范围的最小值就为-7。