在本文,我们将学习一个自定义的类型——枚举。相信很多读者听到这个并不会感觉到陌生,那么本文就来着重跟大家聊一聊何为枚举类型,能用枚举类型干什么事。 话不多说,让我们开始本次精彩的学习吧!💖💖💖
在开始正式学习枚举类型之前,我们得先了解一下何为“枚举”? 所谓枚举顾名思义就是一一列举。把所有可能的值都一一列举出来。
比如:在一个星期内,有星期一、星期二、星期三、星期四、星期五、星期六、星期日,共七天,这个星期是能一一列举出来的 再如:血型,有A型、AB型、B型、O型、熊猫血,这个血型也是能够列举出来的。
说得抽象一点的话,就是在一个有限的集合中,将这个集合里面的值都一一列举出来,而这个集合就属于枚举类型。
在讲完枚举的含义之后,我们就来认识一下,在C语言中是如何声明一个枚举类型的。 举例:
enum Day/星期
{
	Mon,
	Tues,
	Wed,
	Thur,
	Fri,
	Sat,
	Sun
};
enum Sex
{
	Male,
	Female,
	Secret
};
enum Color
{
	RED,
	GREEN,
	BLUE
};注意:这里跟结构体的声明还是有点差别的,请读者在声明枚举类型时注意细节。
以上定义的enum Day,enum Sex,enum Color都是枚举类型。
 {}里面的值就是枚举类型可能取值,也叫做枚举常量。
 这些可能的取值都是有值的,默认是从0开始,依次递增1。当然在声明枚举类型的时候可以给枚举常量赋初值。
enum Color
{
	RED=2,
	GREEN=4,
	BLUE=8
};可能有的读者对上面的一句话:枚举常量默认是从0开始的,依次递增1,这句话可能有点疑惑。 不过没有关系,请看下面的图,你就理解了:

有可能出现别的情况:

根据上面的例子,你可能就懂了,当我们需要给枚举常量一个初值时,可以完全按照我们自己的意愿来进行设置。
细心的读者可能已经发现了,这个不是可以用#define定义一个常量,为什么非得要用枚举?
 举个例子:
enum Color
{
	RED,
	GREEN,
	BLUE
};能不能等价为?
#define RED 0
#define GREEN 1
#define BLUE 2浅浅的看一下,效果是一样的,可是枚举有潜在的优势。
枚举的优势:
enum Color
{
	RED,
	GREEN,
	BLUE
};
enum Color clr = GREEN;//使用枚举常量给枚举变量赋值注意:一旦枚举常量的值确定下来之后,就不可以更改其值了。
那我们是否可以拿整数给枚举变量赋值呢?在C语言中时允许的,但在C++中时不行的,C++对于类型的检查是比较严格的。