C语言中的枚举类型
2022-01-01 本文已影响0人
兰帕德
如果一个变量只有几种可能的值,则可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
声明枚举类型用enum
开头。例如:
enum weekday{sun, mon, tue, wed, thu, fri, sat};
声明了一个枚举类型enum weekday,则可以用此类型来定义变量。例如:
enum weekday workday, week_end; // 定义了两个枚举变量
weekday = mon;
week_end = sun;
也可以直接定义枚举变量,例如:
enum {sun, mon, tue, wed, thu, fri, sat} workday, week_end;
其中sun、mon、…、sat称为枚举元素或枚举常量。
说明:
1、在C编译中,对枚举元素按常量处理,故称为枚举常量。它们不是变量,不能进行赋值。例如sun = 7; mon = 1;
是错误的。
2、枚举元素作为常量,是有值的。C语言编译按定义时的顺序使它们的值为0、1、2……也可以在定义时,指定枚举元素的值,例如:
enum weekday{sun=7, mon=1, tue, wed, thu, fri, sat} workday, ween_end;
// 定义sun=7, mon=1,以后顺序加1,sat=6
3、枚举值可以用来作判断比较。例如:
if(workday == mon)…
if(workday > sun)…
4、一个证书不能直接赋值给一个枚举变量。例如workday=1;
是错误的。它们属于不同的类型。应该先进性强制类型转换,然后才能赋值。例如:
workday = (eunm weekday)2;
相当于将序号为2的枚举元素赋值给workday,相当于
workday = tue;