一.枚举的定义和声明
字面意思,枚举就是一一列举,把可能的取值一一列举,在我们现实生活中有许多可以列举的事物,例如:一周七天,一年四季,性别,月份,三原色等等。当我们需要描述这些数据的时候就可以使用枚举了。其关键字为eunm.
类似于结构体,联合体,定义一个枚举类型的基本形式如下:
enum 枚举名
{
枚举常量1,
枚举常量2,
//...
枚举常量n
};
例如:枚举一星期七天
enum Day//星期
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
以上定义的 enum Day 就是一种枚举类型。 { }中的内容是枚举类型的可能取值,也叫枚举常量 。这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也是可以赋初值的。(后面的值也是顺次加1的)
enum Color
{
RED,//0
GREEN,//1
BLUE//2
};
int main()
{
//enum Color cl = RED;
//RED=5//err
printf("%d\n", RED);
printf("%d\n", GREEN);
printf("%d\n", BLUE);
return 0;
}
注意:对于enum中的枚举常量在使用的时候是不可以再次赋值的,因为它是一个常量值 ,只能在初始化的时候修改默认值。
二.枚举类型的优点
通过枚举的定义我们会发现它与#define效果很类似,那我们为什么非要使用枚举?
枚举的优点:
#define相对来说更加简单粗暴,就是将所有的符号替换为设定值,并且作用域是全局的,而对于枚举变量中的枚举常量,编译器会将它视作一种变量类型,更加严谨,并且只能在函数内部使用,作用范围更精确。我简单举两个案例直观感受一下enum的好处与用途:
eg1:枚举的类型检查
enum Color//颜⾊
{
RED=1,
GREEN=2,
BLUE=4
};
enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值
enum Color clr = 2//err(c++中)
eg2: 枚举的可读性
下面是一个简易计算器实现,其中使用enum会将数字替换成名称,增加代码可读性,更加直观。
void menu()
{
printf("**************************************");
printf("******1.Add 2.Sub****************");
printf("******3.Mul 4.Div****************");
printf("***********0.Exit*********************");
printf("**************************************");
}
eunm
{
Exit,//0
Add,//1
Sub,//2
Mul,//3
Div//4
}
int main()
{
int input = 0;
printf("请输入->");
scanf("%d", &input);
switch (input)
{
case Add://1
//Add();
break;
case Sub://2
//Sub();
break;
case Mul://3
//Mul();
break;
case Div://4
//Dix();
break;
case Exit://0
//Exit()
break;
default:
break;
}
return 0;
}
eg3:枚举一次性定义多个变量,相较于#define更加简洁明了。
enum Color
{
RED=,//0
GREEN,//1
BLUE//2
};
#define RED 0
#define GREEN 0
#define BLUE 0
以上便是对C语言自定义类型变量的最后一种——枚举的简要介绍,望屏幕前的你能有所收获!