赞
踩
字面意思,枚举就是一一列举,把可能的取值一一列举,在我们现实生活中有许多可以列举的事物,例如:一周七天,一年四季,性别,月份,三原色等等。当我们需要描述这些数据的时候就可以使用枚举了。其关键字为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语言自定义类型变量的最后一种——枚举的简要介绍,望屏幕前的你能有所收获!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。