枚举类型相关 枚举是一种用户定义的数据类型用关键字enum以如下语法来声明eunm 枚举类型名字{名字0名字1....名字n}枚举类型名字通常不真的使用要用的是在大括号里面的名字因为他们就是常量符号他们的类型只能是int值则依次从0到nenum colors{red,yellow,green}; //创建三个常量red0yellow1green2当需要一些可以排列起来的常量值时定义枚举的意义就是给这些常量值写名字例子includestdio.h enum color {red,yellow,green}; //申明了这样一个数据类型color,也就相当于int,float,char等等 void f(enum color c); //使用这种数据类型必须带上enum这个字叫做color这种枚举类型 int main(void) { enum color t red; //t是enum color类型的变量值为red scanf(%d,t); //当作int类型输入 f(t); return 0; } void f(enum color c) { printf(%d\n,c); //当作int类型输出 }实际上C语言中enum就是int类型所以每一个枚举变量是可以作为int类型输入输出套路自动计数的枚举 #include stdio.h enum COLOR {RED, YELLOW, GREEN, NumCOLORS}; //最后设置NumCOLORS计数其值为前面枚举量个数 int main(int argc, char const *argv[]) { int color -1; char *ColorNames [NumCOLORS] //可以用NumCOLORS定义数组 { //也可以用NumCOLORS判断整数值是否在有效范围内 red,yellow,green, //也可以用NumCOLORS进行遍历枚举量 }; char *colorName NULL; printf(输入你喜欢的颜色的代码); scanf(%d, color); if ( color 0 color NumCOLORS) { colorName ColorNames [color]; } else { colorName unknown; } printf(你喜欢的颜色是%s\ncolorName); }声明枚举量的时候可以指定值#includestdio.h enum COLOR{RED1,YELLOW,GREEN5,NumCOLORS}; //RED赋值为1其后面的枚举量(YELLOW)就依次加1为2GREEN赋值为5其后的NumCOLORS依次加1就为6 int main(int argc,char const *argc[]) { printf(code for GREEN is %d\n,GREEN); //输出5 }枚举实际上只是int即使给枚举类型的变量赋值不存在的整数也没有任何报错或者警告#includestdio.h enum COLOR{RED1,YELLOW,GREEN5,NumCOLORS}; int main(int argc,char const *argc[]) { enum COLOR color0; printf(code for GREEN is %d\n,GREEN); //输出5 printf(and color is %d\n,color); //输出0不报错 }