C语言中关于枚举类型

做如下定义emuma{1,2,3};为什么会错。。。如果改业emuma{'0','1','2'};或者emuma{0,1,2};这样可以吗... 做如下定义 emum a {1,2,3};为什么会错。。。如果改业emum a {'0','1','2'};或者emum a {0,1,2};这样可以吗 展开
 我来答
吉祥二进制
高粉答主

2015-05-25 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84579

向TA提问 私信TA
展开全部

1.enum 枚举的定义
枚举类型定义的一般形式为:

enum 枚举名{ 枚举值表 };

在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
例如:
该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。

2. 枚举变量的说明
如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。
设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a,b,c;

或者为:

enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;

或者为:

enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

3、枚举类型变量的赋值和使用
枚举类型在使用中有以下规定:
a. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。
例如对枚举weekday的元素再作以下赋值:

sun=5;
mon=2;
sun=mon;

都是错误的。
b. 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。

int main(){
enum weekday
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;
c=tue;
printf("%d,%d,%d",a,b,c);
return 0;
}

说明:
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:

a=sum;
b=mon;

是正确的。而:

a=0;
b=1;

是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。
如:a=(enum weekday)2;
其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:
a=tue;
还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

int main(){
enum body
{ a,b,c,d } month[31],j;
int i;
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])
{
case a:printf(" %2d %c\t",i,'a'); break;
case b:printf(" %2d %c\t",i,'b'); break;
case c:printf(" %2d %c\t",i,'c'); break;
case d:printf(" %2d %c\t",i,'d'); break;
default:break;
}
}
printf("\n");
return 0;
}



斌馥6829
2007-01-06 · TA获得超过568个赞
知道小有建树答主
回答量:545
采纳率:0%
帮助的人:596万
展开全部
应该是 enum
也不行
因为定义的是符号常量,你这里的'0','1','2'或1,2,3都是字面上的常量。
符号常量用来代替字面常量的。
你可以这样定义 enum a {A = 1,B,C = 5,D};
这样的话,A、B、C、D就分别代表了1、2、5、6
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f303fbf86
2007-01-06
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
首先,关键字确实是enum;其次,枚举不能在定义中使用常数,枚举是用来定义顺序常量的,从0开始或者从一个你自己定义的量开始,可以这样:enum Number{ zero, one two …… };这时候zero = 0, one = 1……;第三,你可以查一下“什么是枚举”,有这方面的较全的解释。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fengjian_net
2007-01-06 · TA获得超过2866个赞
知道大有可为答主
回答量:1799
采纳率:50%
帮助的人:2521万
展开全部
肯定也不行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友305c8e06a
2007-01-06 · 超过32用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:0
展开全部
enum
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式