枚举类型在使用中有以下规定:
(1)枚举值是常量,不是变量,不能在程序中用赋值语句再对它赋值。
例如,对枚举weekday的元素再做以下赋值:
sun=5;
mon=2;
sun=mon;
都是错误的。
(2)枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1, 2,…。如在weekday中,sun值为0,mon值为1,…,sat值为6。
【例11.10】
main()
{enumweekday{sun,mon,tue,wed,thu,fri,sat}a,b,c;
a=sun;
b=mon;
c=tue;
printf("%d,%d,%d",a,b,c);
}
说明:
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如
a=sum;b=mon;
是正确的。而
a=0;b=1;
是错误的。如果一定要把数值赋予枚举变量,则必须用强制类型转换。
如:
a=(enumweekday)2;
其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于
a=tue;
还应该说明的是,枚举元素不是字符常量,也不是字符串常量,使用时不要加单、双引号。
【例11.11】
main()
{ enumbody{a,b,c,d}month[31],j;
inti;
j=a;
for(i=1;i<=30;i++)
{month[i]=j;
j++;
if(j>d)j=a;
}
for(i=1;i<=30;i++)
{switch(month[i])
{casea:printf("%2d %c\t",i,'a');break;
caseb:printf("%2d %c\t",i,'b');break;
casec:printf("%2d %c\t",i,'c');break;
cased:printf("%2d %c\t",i,'d');break;
default:break;
}
}
printf("\n");
}
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。