枚举类型
1.定义枚举类型
语法格式:enum 【枚举名称】{枚举常量标识符列表}【变量名列表】
例如:
enum WeekDay{sun,mon,tue,wed,thu,fri,sat}a,b,c; //a,b,c是枚举变量
enum WeekDay today,yestoday; //today,yestoday是枚举变量
enum {Red,Yellow,Blue}clr; //clr是枚举变量
2.枚举数据类型名
在定义枚举类型时,如果缺省【枚举名称】,则无法使用上述枚举类型名来定义变量。
例如:
enum XB {male,female}; //具有枚举名称
enum XB a1,a2,a3; //可用枚举名称定义变量
3.枚举常量
枚举常量是在【枚举名称】后{}中的内容。
1)具有从0开始的序号。例如上面enum WeekDay中,
sun序号是0,mon序号是1
2)枚举标识符常量可以当做整型常量使用,它的值就是它的序号。
例如:若枚举类型enum WeekDay定义如上,则语句printf("%d",fri);打印出5.
事实上,枚举类型的主要应用就是用枚举常量标识符来代替符号常量。
比如,若有定义enum {RED,YELLOW,BLUE};则它与以下宏定义
#define RED 0
#define YELLOW 1
#define BLUE 2
在使用上完全等效。显然enum更省代码。
3)定义枚举类型时,可以设置枚举常量对应的序号,序号可以是任何整数(包括负数)。
例如,若定义enum {sun=7,mon=1,tue,wed,thu,fri,sat};
则sun=7,mon=1,tue=2,wed=3
若定义enum{male=1,female=-1};
则male=1,female=-1
4)枚举类型可以比较大小。
4.枚举变量
1)可以用枚举标识符常量向枚举变量赋值或初始化。例如:
enum {x1,x2}x,y=x2;
x=x1;
2)整型表达式的值如果在枚举值之列,经过类型强制转换后,可以向枚举变量赋值。例如:
today=(enum WeekDay)1;
这是枚举变量与整型变量的唯一区别。