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中的Satprintf("%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();
 
