首页 百科知识 枚举变量如何赋值

枚举变量如何赋值

时间:2022-10-03 百科知识 版权反馈
【摘要】:枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1, 2,…。如在weekday中,sun值为0,mon值为1,…

枚举类型在使用中有以下规定:

(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");

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈