//enum枚举 /* 枚举是c语言中的一种类型,可以让数据更简洁更易读 枚举的定义格式为: enum 枚举名 {枚举元素1,枚举元素2,····,枚举元素n}; 举个栗子,我们要定义一个星期的七天,如果不用枚举,我们需要使用#define来为每个整数定义一个别名 #define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI 5 #define SAT 6 #define SUN 7 这样看起来就比较麻烦,来看看使用举的方式 enmu DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; 看起来更简洁。 注意:第一个枚举成员默认值为整型数字0,后面的成员在前一个成员的基础上加1。 我们把第一个成员定义为1,那么第二个成员就为2,一次类推 可以在定义枚举类型时,改变枚举类型的值 enum season {spring, summer=3, autumn, winter}; spring没有指定,那么按照默认值为0,summer=3,后面的没有指定,那么依次在前一个成员的基础加上1. 所以autumn=4,winter=5 */ //枚举变量的定义 /* 前面只是声明了枚举类型,接下来看看如何定义枚举变量 1.先定义枚举类型,再定义枚举变量 enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; enum DAY day; 2.定义枚举类型的同时定义枚举变量 enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } day; 3.省略枚举类型,直接定义枚举变量 enum { MON=1, TUE, WED, THU, FRI, SAT, SUN } day; */ //举个栗子 #include <stdio.h> enum DAY { MON=1,TUE,WED,THU,FRI,SAT,SUN }; int main01() { enum DAY day; day = WED; printf("day=%d\n",day); //day=3 } //使用for来遍历枚举的元素 int main02() { enum DAY day; for (day=MON;day<SUN;day++) { printf("day=%d\n",day); /* day=1 day=2 day=3 day=4 day=5 day=6 */ } } //枚举在switch中的作用 int main03() { enum color {red=1,green,blue}; enum color favor_color; printf("请输入你喜欢的颜色:(1:red,2:green,3:blue):"); scanf("%d",&favor_color); switch(favor_color) { //red就是1,输入red和输入数字没什么区别,也可以混着用 case red: printf("你喜欢红色\n"); break; case 2: printf("你喜欢绿色\n"); break; case 3: printf("你喜欢蓝色\n"); break; } } //将整数转换为枚举 int main() { enum day { saturday, sunday, monday, tuesday, wednesday, thursday, friday }; int a=1; enum day weekend; //枚举类型不可以中途直接赋值 //必须要进行转化 //weekend = a;就是错误的 weekend = (enum day)a; //要这样赋值,enum day看成一个整体 printf("weekend=%d\n", weekend); //weekend=1 return 0; }