前言
在本文,我们将学习一个自定义的类型——枚举。相信很多读者听到这个并不会感觉到陌生,那么本文就来着重跟大家聊一聊何为枚举类型,能用枚举类型干什么事。
话不多说,让我们开始本次精彩的学习吧!💖💖💖
1. 枚举的含义
在开始正式学习枚举类型之前,我们得先了解一下何为“枚举”?
所谓枚举顾名思义就是一一列举。把所有可能的值都一一列举出来。
比如:在一个星期内,有星期一、星期二、星期三、星期四、星期五、星期六、星期日,共七天,这个星期是能一一列举出来的
再如:血型,有A型、AB型、B型、O型、熊猫血,这个血型也是能够列举出来的。
说得抽象一点的话,就是在一个有限的集合中,将这个集合里面的值都一一列举出来,而这个集合就属于枚举类型。
2. 枚举类型的声明
在讲完枚举的含义之后,我们就来认识一下,在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,这句话可能有点疑惑。
不过没有关系,请看下面的图,你就理解了:
有可能出现别的情况:
根据上面的例子,你可能就懂了,当我们需要给枚举常量一个初值时,可以完全按照我们自己的意愿来进行设置。
3. 枚举类型的优点
细心的读者可能已经发现了,这个不是可以用#define
定义一个常量,为什么非得要用枚举?
举个例子:
enum Color
{
RED,
GREEN,
BLUE
};
能不能等价为?
#define RED 0
#define GREEN 1
#define BLUE 2
浅浅的看一下,效果是一样的,可是枚举有潜在的优势。
枚举的优势:
- 增加代码的可读性和可维护性
- 和#define定义的标识符⽐较枚举有类型检查,更加严谨。
- 便于调试,预处理阶段会删除 #define 定义的符号
- 使⽤⽅便,⼀次可以定义多个常量
- 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤
4. 枚举类型的使用
enum Color
{
RED,
GREEN,
BLUE
};
enum Color clr = GREEN;//使用枚举常量给枚举变量赋值
注意:一旦枚举常量的值确定下来之后,就不可以更改其值了。
那我们是否可以拿整数给枚举变量赋值呢?在C语言中时允许的,但在C++中时不行的,C++对于类型的检查是比较严格的。