如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。
设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:
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;
如一定要把数值赋予枚举变量,则必须用强制类型转换。
如:
a=(enum weekday)2;
其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:
a=tue;
还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。
例:
#include <stdio.h>
int main()
{enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b,c;a=sun;b=mon;c=tue;printf("%d,%d,%d \n",a,b,c);return 0;
}
运行:
0,1,2
Press any key to continue
#include <stdio.h>int main(){enum body{a,b,c,d} month[31],j;int i1;j=a;for(i1=1;i1<=30;i1++){month[i1]=j;j++;if(j>d) j=a;}for(i1=1;i1<=30;i1++){switch(month[i1]){case a:printf("%2d %c\t",i1,'a');break;case b:printf("%2d %c\t",i1,'b');break;case c:printf("%2d %c\t",i1,'c');break;case d:printf("%2d %c\t",i1,'d'); break;default:break;}}printf("\n");return 0;
}
运行:
1 a 2 b 3 c 4 d 5 a 6 b 7 c 8 d 9 a 10 b
11 c 12 d 13 a 14 b 15 c 16 d 17 a 18 b 19 c 20 d
21 a 22 b 23 c 24 d 25 a 26 b 27 c 28 d 29 a 30 b
Press any key to continue
enum string { x1, x2, x3=10, x4, x5, }x; 问x;答案:取值在0。1。10。11。12中的一个