1、枚举类型
枚举类型的关键字是:enum
枚举顾名思义就是一 一列举。
把可能的取值一 一列举。
比如,比如我们现实生活中,一周的星期一到星期日是有限的的7天,可以一 一列举。三原色(红、蓝、绿)也是可以一一列举。
性别:男、女、保密,也可以一一列举。
例如:
enum Color//颜色
{
RED,
GREEN,
BLUE
};
enum Sex//性别{
MALE,
FEMALE,
SECRET
};
以上定义的:enum Color, enum Sex都是枚举类型。{}中的内容是枚举类型的可能取值,也叫枚举常量。
这些可能取值都是有值的,默认从0开始,一次递增1,当然在声明枚举类型的时候也可以赋初值。
例如:
enum Color//颜色
{
RED=2,
GREEN=4,
BLUE=6
};
代码示例:
源代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
enum Color
{
RED,
GREEN,
BLUE
};
int main()
{
printf("%d\n", RED);
printf("%d\n", GREEN);
printf("%d\n", BLUE);
return 0;
}
注意:
2、枚举类型的优点
为什么使用枚举?
我们可以使用#define定义常量,为什么非要使用枚举?
枚举的优点:
(1)增加代码的可读性和可维护性
(2)和#define定义的标识符相比,枚举有类型检查,更加严谨
(3)便于调试,预处理阶段会删除#define定义的符号
(4)使用方便,一次可以定义多个常量
(5)枚举常量是遵循作用域规则的。枚举声明在函数内,只能在函数内使用。
增加代码的可读性:
例如:
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
enum option
{
EXIT,//退出程序
ADD,//加法
SUB,//减法
MUL,//乘法
DIV//除法
};
int main()
{
int x = 0;
int y = 0;
scanf("%d %d", &x, &y);
printf("**** 0 退出程序 1 加法\n");
printf("**** 2 减法 3 乘法\n");
printf("**** 4 除法\n");
int n = 0;
printf("请输入选项:");
scanf("%d", &n);
switch (n)
{
case EXIT:
break;
case ADD:
printf("%d\n", x + y);
break;
case SUB:
printf("%d\n", x - y);
break;
case MUL:
printf("%d\n", x * y);
break;
case DIV:
if (y ==0 )
{
printf("y不能为0");
break;
}
printf("%d\n", x / y);
break;
default:
printf("输入错误");
}
return 0;
}
3、枚举类型的使用
在C语言中,也可以拿整数给枚举变量赋值。但是在C++中是不行的,C++的类型检查比较严格。
例如: