C语言中的枚举类型介绍如下:(不同语言中可能有微小的差别)
枚举类型定义格式:
enum [enum_name] {<enum_element1>,[enum_element2],[enum_element3],.....}
以上格式中,方括号内别是可选的,尖括号内表示必选的。
以上枚举类型的名字是可选的是指当枚举类型定义时定义变量这种情况,如下:
enum day {monday,tuesday,wednesday,thursday,friday} today;
枚举类型的元素列表使用大括号括起来的,枚举类型的元素列表中至少要有一个元素。
枚举类型的元素列表中的元素是被当做常量来处理的,叫做枚举常量。
在C语言中,枚举常量都是int型的,但是枚举类型定义的变量(today)不一定是int类型的,它可能是unsigned char、signed int、unsigned int等(根据不同的系统或不同的编译器而不同),只要能保证这个类型能装下所有的枚举常量就行。所以在打印枚举变量为int类型数时,最好加上强制转换,如下:
printf("today is %dth day of this week.\n",(int)today);
当时在打印枚举常量时,不用加强制转换,如下:
printf("%d\n",wednesday);
注意,以上语句中,可以直接使用枚举常量的名字。
C语言枚举类型在定义变量时需要加上enum关键字(可能其他语言有的不需要加enum关键字),如下:
enum day tommoral; 正确
day tommoral; 错误
C语言枚举类型没有成员操作符的使用,如下
printf("%d\n",day.monday); 错误
printf("%d\n",enum day.monday); 错误
枚举变量在输出时,只能输出它所对应的值,而不能输出表示它的字符串,因为那个字符串是int型常量的名字。
因为枚举类型的元素是int型常量,所以不能对枚举常量进行赋值操作。
可以对枚举变量(today)进行赋元素操作,也可以对它进行复赋整型值操作,如下:
today=wednsday; 正确
today=10; 正确,虽然没有意义