枚举类型是一个可以用户自定义的类型,语法为:
enum colors{red,yellow,blue};
enum colors car=red;
上面代码的意义是,定义了一个枚举类型enum colors,该类型的变量只能在其后面{}中的内容(被称为名字)中取值,即enum colors类型变量car只能等于red,yellow,blue三个值。然而car在计算机内部并非以“red”字符串存在,而是以一个整型常量存在。默认情况下{}中第一个名字为0,往后依次递加1。同时,名字也可以作为常量直接输出或使用。调试程序:
#include<stdio.h>
void main(void)
{
enum colors{red,yellow,blue,black};
enum colors car1 = red;
enum colors car2 = yellow;
enum colors car3 = blue;
printf("car1的颜色是:%d\n",car1);
printf("car2的颜色是:%d\n",car2);
printf("car3的颜色是:%d\n",car3);
printf("car4的颜色是:%d\n",black);
}
运行结果:
car1的颜色是:0
car2的颜色是:1
car3的颜色是:2
car4的颜色是:3
在{}中所有的名字后加入countnum项,在默认数值(第一个为0,往后累加)的情况下,countnum的值为{}可用名字的数量:
#include<stdio.h>
void main(void)
{
enum colors{red,yellow,blue,black,countnum};
printf("一共有%d种颜色\n",countnum);
}
代码运行结果如下:
一共有4种颜色
当然,{}中的名字除了可以采用默认值外,还可以手动赋值。其中,缺省项由前项递增1得到。调试程序如下:
#include<stdio.h>
void main(void)
{
enum colors{red=5,yellow,blue,black=1,countnum};
printf("red代表%d\n",red);
printf("yellow代表%d\n",yellow);
printf("blue代表%d\n",blue);
printf("black代表%d\n",black);
printf("countnum代表%d\n",countnum);
}
代码运行结果为:
red代表5
yellow代表6
blue代表7
black代表1
countnum代表2
枚举类型在实际使用中通常起到用容易理解的单词代替意义不明显的数值,使得代码的可阅读性更好。