What
是一种构造数据类型
是一组常量的集合,包含一组有限的限定的数据
是一个被命名的整型常数的集合
Why
- 如果需要通过用户输入的数字来判断执行对应的逻辑语句,就会用到switch,在C语言中switch的expression 必须是常量表达式或枚举类型,子句中的值也必须是常量,那么常量表达式不能非常直观的看出这是什么,所以就可以用到枚举,因为枚举的元素也只能是整型。
- 比如:一星期有 7 天,如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名:
#define MON
#define TUE
#define WED
#define THU
#define FRI
#define SAT
#define SUN
//这个看起来代码量就比较多,接下来我们看看使用枚举的方式:
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
How
通过enum
关键字枚举变量
通过枚举构造出来的变量,只能取枚举结构中的其中一个标识符常量。void main()
{
enum Day //Day 就是枚举类型
{
MON = 1,
Tue = 2,
Wed = 3,
Thu = 4,
Fri = 5,
Sat = 6,
Sun = 7
};
enum Day day;//enum Day是枚举数据类型 day是枚举变量
day = Sat;//提取day中的Sat
printf("%d", day);
getchar();
}
在switch中的应用
enum SEASONS
{
SPRING = 1,
SUMMER,
AUTUMN,
WINTER
} season;
printf("输入你喜欢的季节:(1.srping,2.summer,3.autumn,4.winter");
scanf("%d", &season);
switch (season)
{
case SPRING:
printf("你喜欢春天");
break;
case SUMMER:
printf("你喜欢夏天");
break;
case AUTUMN:
printf("你喜欢秋天");
break;
case WINTER:
printf("你喜欢冬天");
break;
default:
printf("你为什么不选");
}
fflush(stdin);
getchar();
}
遍历枚举
如果枚举没有初始化,即省掉”=整型常数”时, 则从第一个标识符开始,顺次赋给标识符0, 1, 2, …。
但当枚举中的某个成员赋值后,其后的成员按依次加1的规则确定其值。enum Day
{
Mon = 1,Tue,Wed,Thu,Fri,Sat,Sun
}day;
for (day = Mon; day <= Sun; day++){
printf("%d",day);
}
getchar();