1. 枚举平常用的少,印象中枚举的使用还停留在星期的举例上,就像下面这个例子:
#include<stdio.h> enum week { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Wenday, }; int main(int argc, char const *argv[]) { enum week today; //scanf("%d",&today);//警告 scanf("%d",(enum week)&today); switch(today) { case Monday: printf("today is Monday.\n"); break; //... } return 0; }注:直接给枚举类型变量赋整数值,需要进行类型转换,不然会出警告:
2. 最近看代码经常碰到这样的例子,typedef enum{...}TYPE_T;
把某个变量可能的几种类型,封装到一个enum中,感觉很不错。摆脱那种只有固定几个类型才使用enum的思想,例如week、month、quater等;以后在写代码的过程中,只要一个变量(命令)的取值只有固定几种,就可以用enum进行封装。这样避免了直接使用数字的含义模糊、或者搞好几个宏定义的累赘。
#include<stdio.h> typedef enum { TYPE1 = 1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE_MAX, }TYPE_T; int main(int argc, char const *argv[]) { TYPE_T type = TYPE2; if (type < TYPE_MAX) { switch(type) { case TYPE2: printf("type is TYPE2.\n"); break; //... } } return 0; }如果用define,比较累赘:
#include<stdio.h> #define TYPE1 1 #define TYPE2 2 #define TYPE3 3 #define TYPE4 4 #define TYPE5 5 #define TYPE_MAX 6 int main(int argc, char const *argv[]) { int type = TYPE2; if (type < TYPE_MAX) { switch(type) { case TYPE2: printf("type is TYPE2.\n"); break; //... } } return 0; }
