枚举就是一一列举。
把可能的取值一一列举。
比如我们现实生活中:
一周的星期一到星期日是有限的7天,可以一一列举。性别有:男、女、保密,也可以一一列举。
月份有12个月,也可以一一列举
枚举类型的定义
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 都是枚举类型。
{}中的内容是枚举类型的可能取值,也叫 枚举常量
我们要知道枚举的值都是有初识值的。注意:最后一个不加逗号。
enum Sex//性别
{
MALE,
FEMALE,
SECRET
};
int main()
{
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
}
我们看到系统自动按照枚举类型定义的顺序自动将其从0开始赋值,每一次递增1。
当然我们枚举的值也是可以改变的。
enum Day//星期
{
Mon=4,
Tues=5,
Wed=9,
Thur=7,
Fri=0,
Sat=1,
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);
}
若有不赋值的,则按照前面的一个往下顺延。
枚举的优点
为什么使用枚举?
我们可以使用 #define 定义常量,为什么非要使用枚举?
枚举的优点:
1. 增加代码的可读性和可维护性
2. 和#define定义的标识符比较枚举有类型检查,更加严谨。
3. 防止了命名污染(封装)
4. 便于调试
5. 使用方便,一次可以定义多个常量