1 枚举类型1.1枚举声明枚举类型的声明
枚举顾名思义就是⼀⼀列举。
把可能的取值⼀⼀列举。
⽐如我们现实⽣活中:
⼀周的星期⼀到星期⽇是有限的7天,可以⼀⼀列举
性别有:男、⼥、保密,也可以⼀⼀列举
⽉份有12个⽉,也可以⼀⼀列举
三原⾊,也是可以意义列举
这些数据的表⽰就可以使⽤枚举了。
枚举的关键词:enum
代码语言:javascript代码运行次数:0运行复制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,当然在声明枚举类型的时候也可以赋初值。
代码语言:javascript代码运行次数:0运行复制enum Color//颜⾊
{
//他们是枚举常量,被称为枚举常量,在第一次赋值时候可以给初始值,之后常量不能被改变
RED=2,
GREEN=4,
BLUE=8
};代码语言:javascript代码运行次数:0运行复制int main()
{
enum un
{
add,
sub,
mul,
div,
};
enum un n1 = mul;
printf("%d",div);
printf("%d",n1);
return 0;
}我们可以直接用枚举里面的值也可以把枚举里面的值赋予给变量。
1.2 枚举类型的优点为什么使⽤枚举?
我们可以使⽤ #define 定义常量,为什么⾮要使⽤枚举?
枚举的优点:
1. 增加代码的可读性和可维护性
2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨。
3. 便于调试,预处理阶段会删除 #define 定义的符号
4. 使⽤⽅便,⼀次可以定义多个常量
5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤
第5条如上图:枚举如果是局部变量只能在局部使用。
2.3 枚举类型的使⽤1 enum Color//颜⾊
2 {
3 RED=1,
4 GREEN=2,
5 BLUE=4
6 };
7
8 enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值
那是否可以拿整数给枚举变量赋值呢?在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐
较严格。
代码语言:javascript代码运行次数:0运行复制#include
int add1(int x, int y)
{
return x + y;
}
int sub1(int x, int y)
{
return x - y;
}int mul1(int x, int y)
{
return x * y;
}int div1(int x, int y)
{
return x / y;
}
void meun()
{
printf("********************\n");
printf("*** 1 add*** 2 sub****\n");
printf("*** 3 mul*** 4div****\n");
printf("*** 0 exit ****\n");
printf("********************\n");
}
int main()
{
enum un
{
exit,
add,
sub,
mul,
div,
};
int x = 0;
int y = 0;
int input = 0;
int ret = 0;
do
{
meun();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case add:
printf("请输入两个数:");
scanf("%d %d",& x,& y);
ret=add1(x, y);
printf("%d", ret);
break;
case sub:
printf("请输入两个数:");
scanf("%d %d", &x,& y);
ret = sub1(x, y);
printf("%d", ret);
break;
case mul:
printf("请输入两个数:");
scanf("%d %d", &x,& y);
ret = mul1(x, y);
printf("%d", ret);
break;
case div:
printf("请输入两个数:");
scanf("%d %d",& x,& y);
ret = div1(x, y);
printf("%d", ret);
break;
case 0:printf("退出计算器"); break;
default: printf("输入错误,请重新输入");break;
}
} while (input);
}这里可以提高程序的可读性。