枚举(Enum)的定义
当一个变量的值被限于列出来的值的范围内,那么这个变量就可以被定义为一个枚举类型的变量。比如一个星期有7天,每一天,都是确定的;一年有12个月,每个月也都是确定的。假如用1个变量来表示一个星期的某一天,或者一年的某个月,用其它的类型都不是很恰当。于是C语言里就引入了一个枚举类型(enum)。
在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。枚举类型是一种基本数据类型,而不是像struct这样的一种构造类型,因为它不能再分解为任何基本类型。
enum 枚举名
{
值1,//如果不额外指定则第一个标识等于整数0,后续依次加1
值2,
值3=7,//注意,值3的值不能被指定为0,1,否则会和值1,值2冲突
值4,//这个时候,值4的值是8
....
值n
};
enum 枚举名 变量名;
enum FRUIT
{
APPLE,
PEAR,
PEACH,
GRAPE,
BANANA
};
enum FRUIT myfruit = PEACH;
typedef enum _WINVERSION
{
,
WIN2000,
WINXP,
WIN7,
WIN8
} WINVERSION;
WINVERSION winos = WIN8;
typedef enum _WEEKDAY
{
SUNDAY,
MONDAY,
TUESDAY,
WENSEDAY,
THURSDAY,
FRIDAY,
SATURDAY
}WEEKDAY;
WEEKDAY day = MONDAY;
printf(“sizeof(WEEKDAY) = %d\n”, sizeof(day));
注意:枚举变量的值,在定义的时候要全部给出,而且枚举值本身是一个常量,它的值不能被改变。比如:
SUNDAY = 2;//错误
WEEKDAY day = 1 //错误
WEEKDAY day = MONDAY//正确
WEEKDAY day = (WEEKDAY)1//正确