枚举
就是把可能的值一一列举
比如:月份有12个月份,可以一一列举
3.1枚举类型的定义
enum Day
{
Mon,
Tues,
Wed,
Thur,
};
enum Sex
{
MALE,
FEMALE,
SECRET
};
以上定义的enum Day 是枚举类型
{}中的内容是枚类型的可能取值,也叫枚举常量
这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值
未赋初值:
enum Day
{
Mon,
Tues,
Wed,
Thur,
Sun
};
int main()
{
printf("%d\n", Mon);
printf("%d\n", Thur);
printf("%d\n", Sun);
return 0;
}
赋初值:
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;
}
3.2枚举的优点
1.增加代码的可读性和可维护性
比如通讯录的1.add 2.del 3.search 4.modify 5.show 6.sort 0.exit 使用枚举:
enum Option
{
EXIT(0),
ADD,
DEL,
SEARCH,
MODIFY,
SHOW,
SORT
};
后面的switch结构中的case 1可以改为case ADD,以此类推
2.和#define定义的标识符比较枚举有类型检查,更加严谨(在c++中更明显)
enum Day
{
//枚举常量,无法被修改值
Mon=1,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
int main()
{
enum Day d = 5;//1.
enum Day d = fri;//2.
return 0;
}
在c++中会报错(1.),初始化:无法从int转换为“Day”,即进行类型检查
3.防止了命名污染(封装)
4.便于调试
#define需要完成替换
#define M 100
int main()
{
enum Day d = Fri;
int m = M;
return 0;
}
调试在预处理之后,所以调试的时候无法很好地观察M的变化
而枚举不需要完成替换
5.使用方便,一次可以定义多个常量
不用像#define那样定义一个常量之前都需要敲一次#define