目录
概念:
枚举顾名思义就是⼀⼀列举。 把可能的取值⼀⼀列举。
⽐如我们现实⽣活中:
⼀周的星期⼀到星期⽇是有限的7天,可以⼀⼀列举
性别有:男、⼥、保密,也可以⼀⼀列举
⽉份有12个⽉,也可以⼀⼀列举
三原⾊,也是可以一一列举
这些数据的表⽰就可以使⽤枚举了。
枚举的声明:
enum Day//星期
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
- enum 表示枚举的关键字,不可更改。
- Day 表示枚举的名字,或者说枚举的标签,可以更改。
- { }花括号内的是枚举常量,没有数据类型的修饰,枚举常量就是常量。
注意:枚举常量是用逗号隔开的,最后一个枚举常量不写逗号,这和数组的写法一样,数组:arr[]={1,2,3,4,5};
枚举的使用:
enum Day//星期
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
int main()
{
enum Day d = Fri;
return 0;
}
枚举的用法,d就表示为枚举变量,并给d赋值,赋值为Fri 此时d就i代表着该枚举中的Fri
并且枚举声明只是一种类型没法再内存中开辟空间,只有在创建该枚举类型的变量并赋值时才算开辟了空间。
枚举的取值:
enum Day//星期
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
int main()
{
printf("%d\n",Mon);
printf("%d\n", Tues);
printf("%d\n", Wed);
return 0;
}
输出结果:
由此得知,枚举常量都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。
enum Day//星期
{
Mon = 1,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
int main()
{
printf("%d\n",Mon);
printf("%d\n", Tues);
printf("%d\n", Wed);
printf("%d\n",Thur);
printf("%d\n", Fri);
printf("%d\n", Sat);
printf("%d\n", Sun);
return 0;
}
输出结果:
枚举的优点:
我们可以使⽤ #define 定义常量,为什么⾮要使⽤枚举?
#define的功能:
define有一种代替的作用且是在预处理的时候进行代码的替换处理。
#define M 100
int main()
{
int m = M;
return 0;
}
通过#define我们将M用100代替,因此最后m得到的值是100,而不是M。
#define再预处理的时候就将代码进行了修饰。
而与#define对比,枚举的优点有:
- 增加代码的可读性和可维护性
- 和#define定义的标识符⽐较枚举有类型检查,更加严谨。
- 便于调试,预处理阶段会删除 #define 定义的符号。
- 使⽤⽅便,⼀次可以定义多个常量。
- 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤。