枚举:
一种用户定义的数据类型,它用关键字enum以如下语法来声明:
enum 枚举类型名字{名字0,…名字n} ;
枚举类型名字通常并不真的使用,要用的是在大括号里的名字,因为它们就是就是常量符号,它们的类型是int,值则依次从0到n。如:
enum colors { red, yellow,green } ;
就创建了三个常量,red的值是0,yellow是1,而green是2。
当需要一些可以排列起来的常量值时,定义枚举的意义就是给了这些常量值名字。
枚举的自动计数
#include<stdio.h>
enum color{ red,yellow,green, Numcolors
};
int main(int argc,char const*agrv[])
{
int color = -1;
char *ColorNames[Numcolors] ={
"red","yellow","green",};
char *colorName = NULL;
printf("输入你喜欢的颜色代码:");
scanf("%d",&color);
if(color >= 0 &&color<Numcolors){
colorName = ColorNames[color];
} else{
colorName = "unknown";
}
printf("你喜欢的颜色是%s\n",colorName);
return 0 ;
}
这样需要遍历所有的枚举量或者需要建立一个用枚举量做下标的数组的时候就很方便了。
枚举量
·声明枚举量的时候可以指定值
. enum COLOR {RED=1,YELLOW,GREEN = 5};
#include<stdio.h>
enum color {red = 1,yellow,green = 5,Numcolors
};
int main(int argc,char const*argv[])
{
printf("code for green is %d\n",green);
return 0 ;
}
枚举只是int
·即使给枚举类型的变量赋不存在的整数值也没有任何warning或error
虽然枚举类型可以当作类型使用,但是实际上很(bu)少(hao)用
如果有意义。上排比的名字,用枚举比const int方便
枚举比宏(macro) 好,因为枚举有int类型.