• LeekinDeveloper@Gmail.com

C++ 枚举类型


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
3
int 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。