枚举类型通常用来存放整形常量。可以使用enum关键字来创建一个"新的类型",用来表示一组关系比较密切的整形常量。
可以这样声明:
enum spectrum { red,orange,yellow,green,blue,violet };
enum spectrum color;
第一条语句声明创建了spectrum 作为标记名,允许把enum spectrum作为一个类型名使用。第二条语句声明了将 color作为该类型的变量。在第一条语句中依次列举了spectrum 变量可能有的值,因此color的值可能是red,orange,yellow,green,blue,violet这些等。比如要给color赋值时,可以这样操作:
color = green;
下面使用整形来打印这些枚举类型的值。
printf("%d %d %d %d %d %d\r\n",red,orange,yellow,green,blue,violet);
打印结果如下:
通过打印的结果可以发现,枚举类型的默认值都是从0开始的,如果不想使用默认的值,也可以直接给枚举类型赋值。
enum spectrum { red = 10,orange,yellow,green,blue,violet };
printf("%d %d %d %d %d %d\r\n",red,orange,yellow,green,blue,violet);
将第一个枚举常量的值修改为10,打印结果如下:
这里只对第一个枚举常量赋值,但是后面的枚举常量的值会依次递增。继续修改代码如下:
enum spectrum { red = 1,orange,yellow,green = 10,blue,violet };
printf("%d %d %d %d %d %d\r\n",red,orange,yellow,green,blue,violet);
打印结果如下:
通过打印结果可以发现,只要前面的枚举类型值发生了改变,那么后面紧跟着的枚举类型值就会自动加1。
通过使用枚举类型,可以提高程序的可读性和维护性。比如下面的代码:
int main()
{
enum spectrum { red,orange,yellow,green,blue,violet };
enum spectrum color;
color = green;
switch(color)
{
case red:
puts("color is red!");
break;
case orange:
puts("color is orange!");
break;
case yellow:
puts("color is yellow!");
break;
case green:
puts("color is green!");
break;
case blue:
puts("color is blue!");
break;
case violet:
puts("color is violet!");
break;
}
system("pause");
return 0;
}
通过枚举类型来表示使用的各种颜色,这样在阅读代码的时候,通过名称就可以清晰的看出所使用的颜色,如果将枚举类型改成用整数0、1、2、3来表示的话,代码阅读起来就比较困难,必须借助于注释才能明白代码的具体含义。
当然也可以将枚举类型改成宏定义来实现,上面的代码可以修改如下:
#define red 0
#define orange 1
#define yellow 2
#define green 3
#define blue 4
#define violet 5
int main()
{
int color;
color = green;
switch(color)
{
case red:
puts("color is red!");
break;
case orange:
puts("color is orange!");
break;
case yellow:
puts("color is yellow!");
break;
case green:
puts("color is green!");
break;
case blue:
puts("color is blue!");
break;
case violet:
puts("color is violet!");
break;
}
system("pause");
return 0;
}
通过宏定义的方式也可以实现同样的功能,但是宏定义是代码看起来比较松散,而且定义的变量比较多,修改起来也比较麻烦。而且枚举变量还有一个优势就是可以进行自增或者自减运算。
int main()
{
enum spectrum { red,orange,yellow,green,blue,violet };
int color;
for(color = red; color<=violet; color++)
switch(color)
{
case red:
puts("color is red!");
break;
case orange:
puts("color is orange!");
break;
case yellow:
puts("color is yellow!");
break;
case green:
puts("color is green!");
break;
case blue:
puts("color is blue!");
break;
case violet:
puts("color is violet!");
break;
}
system("pause");
return 0;
}
在循环中依次给color赋值,然后打印当前的颜色。接着color的值自增1,打印结果如下:
通过自增或者自减的运算,使枚举类型应用起来更加灵活。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_20222919/article/details/121207813
内容来源于网络,如有侵权,请联系作者删除!