C语言枚举类型怎么用?

为什么只定义了枚举类型,就可以直接用,不需要定义枚举变量吗?麻烦知道的大牛指导下,谢谢!... 为什么只定义了枚举类型,就可以直接用,不需要定义枚举变量吗?麻烦知道的大牛指导下,谢谢! 展开
 我来答
自我编程
2019-09-12 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

typedef只是给枚举类型起个别名,在图中代码根本没用处。

你图中的代码,是直接使用了枚举成员,枚举成员就是常量,直接使用常量没问题。

枚举型是集合,集合中的元素(枚举成员)是一些命名的整型常量,相当于多个#define语句(只不过枚举成员对应的数值可自增)

这个成员常量不同于结构成员变量名,是唯一的,你可以试试再定义一个枚举类型比如:

typedef enum

{

    Monday=0,

    Tuesday

}WeekTypedef2;

这样会报错,因为你之前定义的枚举类型中已经有同名成员了。换个名字就可以了,比如:

typedef enum

{

    Monday2=0,

    Tuesday2

}WeekTypedef2;




童之新
2019-09-12 · TA获得超过228个赞
知道小有建树答主
回答量:289
采纳率:60%
帮助的人:82.6万
展开全部
枚举啊,就相当于一个宏定义,与#define Monday 0等效,而且在枚举里可以轻松修改数据,比宏定义操作更为方便,假如你宏定义一堆的变量,分别从1到100分配,那么你在枚举里只要把第一个变量赋值为1,后面的变量自动加1排序了,有100个,那么第100个的值就为100了,而且中间你可以改变某个变量的值,那么那个变量以下的值又会跟着这个值重新自增排列
追问
你好,谢谢你的回答,你说这个我知道,我意思是为什么不定义枚举变量,直接用枚举定义的值也可以?
追答
枚举就相当于宏定义,你直接enum{...};这样就行了,不过为了方便定义了哪些枚举才加个枚举名来分辨,不需要像结构体那样需要用结构体变量来引出结构体成员
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinaboyzyq
2019-09-12 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3275万
展开全部
枚举类型定义时,定义的是可以枚举的常量,常量符号的值在定义枚举时已经初始化完成。
有没有枚举变量都不影响已经存在的可枚举常量,
定义枚举变量将来也是要赋值某一枚举常量的。

比如:
WeekTypedef day=Monday;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸福人和马叫门n
2019-09-09 · TA获得超过310个赞
知道小有建树答主
回答量:600
采纳率:70%
帮助的人:71.2万
展开全部
枚举类型的作用要相对小一些,它其实就是个int类型,但对程序的可读性贡献很大。
至于“结构体有什么用”,这绝对是个新手问题——因为结构体简直无所不用!简单的说,函数体现算法,而结构体则体现数据结构——算法、数据结构恰是程序设计的核心。无论你想用链表、队列、栈、树等数据结构,还是为了方便而把多个数据成员结合在一起(比如,你要存储考生信息,就可以设计一个结构,里面包含姓名、考号、分数等数据成员),都要用到结构体。建议楼主去看看别人写的程序(比如Linux内核,TCP/IP实现),你会发现里面到处都是结构。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2020-12-31 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式