说明百度百科:
enum是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。
定义:3中方法
如同结构体(struct)和共用体(union)一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。
设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:
1
2
3
4
5
6
|
enum
weekday{sun,mon,tue,wed,thu,fri,sat};
enum
weekday a,b,c;
//或者为:
enum
weekday{sun,mon,tue,wed,thu,fri,sat}a,b,c;
//或者为:
enum
{sun,mon,tue,wed,thu,fri,sat}a,b,c;
|
枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,sat值为6。
PS:当weekday幅值为8时会怎忙,在GCC上验证一下,发现gcc并没有检测出超出enum枚举范围,输出8。
<textarea readonly="readonly" name="code" class="c++">
#include"stdio.h"
void main()
{
enum weekday {sun, mon, tue, wen, thu, fri, sat};
enum weekday day1;
day1=(enum weekday)8;
printf("hello\n%d,%d\n",day1,tue);
return ;
}
book@book-desktop:/work/c_file$ gcc first.c
book@book-desktop:/work/c_file$ ./a.out
hello
8,2
</textarea>