3821|7

1万

帖子

202

TA的资源

管理员

楼主
 

水军课堂:关于枚举类型的那些事儿 [复制链接]

在咱们的EEWORLD论坛里隐藏着一支队伍庞大的水军,相信常来的网友们都有所听说。今天,咱们的一名水兵正在学习C语言枚举类型方面的知识点,他有点困惑,于是发起了一个小问题,引来了大家的各种讨论。下面做下本次讨论课的记录,可能刚好你也正在学习这一块,可能你了解过却是不求甚解,今天就让我们一起挖一挖C枚举吧~

水兵1号发问:C里面的枚举是属于基本数据类型,还是构造数据类型,枚举里面的值是不是和结构体一样,在后面当变量使用,改变的?


A:枚举不会改变的吧,里面的值是常量了,你要修改得在里面修改
1号:枚举定义好之后,不能改变里面的值了?
A:好像是递增,你取了第一个的值,下面的值都是递增了
A:可以啊,我也不太明白。队长,色哥,主任上
B冒泡:你定了一个枚举类型,里面设定的枚举值是常量。你定义一个枚举类型的变量,可以改变这个变量的值,这个变量的取值在你一开始设定的枚举类型的枚举值里面选
A:说得对。里面的值还是递增的
B:一般来说是递增的。但是不是绝对的
A:比如我在第三个值重新变个值,那么下面就按照第三个值来递增
A:递减的我好像没看过
B:我没说递减啊,我见过的世面少,我没见过递减的,但是我就记得当初学的时候有说不是绝对的。。有语言可以自己强制编码的
----等待其他成员上线中---表情党出没---你可以当作中场休息

C君上线:枚举就是
static A=1;
#define a A
#define b A++
#define c A+ = 2
。。。。
1号:不知道,枚举定义的时候,好不好加const的
C:const是const enum是#define,编译的时候替换,而不是常量,常量 是数据类型,哈哈 你晕了没 你晕了我目的就达到了~
D被晕出来了:(+﹏+)~
E:定义枚举的值是常量,定义好后就不能变了
D:声明枚举变量跟什么其它一样的,可以加const


1号:E君救星你出来啦~~数组前面加一个CONST,就会把数据定死,不能修改了,我在想枚举,结构体这种,是不是也可以加一个CONST,把数据固定死的?
C:#define前面是不会加const的 一个道理
F:枚举定死有啥好处?
C:enum是数据类型,成员就是常量 定义好了就直接替换 不会出现改动
1号:C啊,你的意思是结构体,枚举不能加CONST的
D:可以加const
C:枚举放在结构体里面?
F:很多种方法都可以实现相同的功能,选最好的实现方法就好了。
D:自己这个小程序跑一下就知道了
C:不是不能加 不报错也可以加 没意义
F:本来i++可以办的事 你非要写成 i=i+1 就是闲的

1号:是这样的,单片机里数组定义好,就是在内存区定义的,加了CONST,就是把数据存到程序区去了,我在想,结构体,枚举定义,是不是也有这种概念在里面?
C:enum color
{
a=1,
b,
c,
d
}


就相当于
#define a 1
#define b 2
#define c 3
#define d 4
F:你们说的好复杂,数组以后的内容我都没有学过……但感觉上面的两者应该是不相等的
G君打算用代码实践说话:

G:不光可以加const 还可以加static
A:还可以静态?不会报错吗?
G:你试试啊

E:@1号 结构体,联合体,类这些数据类型的定义是不占存储空间的
G:E啊,不同编译器对此解释不大一样啊,有的占有的不占
E:@G君  怎么个占法?
G君又扔出一波图片:






C:枚举常量存储在数据段的静态存储区里
E:@G 你那是输出大小而已,并没占内存
G:vs的c编译器不允许空结构体
D:那是申明了,申明一个变量才有空间
G:




1号:E,G,继续水,小弟早上看了你们的聊天,收获很多
E:不明白的就写代码,深究看代码生成的汇编
H大大来发言:C是C,别听瞎说
E:调试的时候,有时候是要看汇编的
I,F:怼
G:是,找入口地址,然后绕过验证
E:那是黑客
-------省略中间若干对话,场面开始失控-------一段时间后回归正题---------
H:
第一个问题,const那个,就几句话解释:
第一句,const修饰的是变量,不是类型。所以对enum,struct类型定义来说,,,没用。
第二句,enum引入的是类型符号,和数值没太多关系,虽然你可以定义1,2,3,但是同样你也可以不定义1,2,3,只当符号用,
第三句,#define 是宏处理的字符替换,而enum是C里面的类型,好处是enum有类型检查,而#defien没有。
完毕。


收尾:
D:struct a{} bbc; 这个已经是申明一个变量了,肯定有内存,E说的是定义, struct a{}; 这样的


------
1号:在轻松中学习,在学习中放松,不要把学习当成负担,学习是快乐的,i love 水群





小伙伴们对上面讨论的内容有任何异议和疑问都可以跟帖继续发问哦~同样,有相关的问题也可以再发帖求助或者觉得上述讨论有些点你觉得值得一提却没有提到,=热烈欢迎发帖来发表你的个人意见和见解!!!






此帖出自编程基础论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

最新回复

女神不容易  详情 回复 发表于 2017-10-10 20:29
点赞 关注(1)
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 

回复
举报

6041

帖子

191

TA的资源

版主

沙发
 
此帖出自编程基础论坛
 
 
 

回复

2774

帖子

8

TA的资源

版主

板凳
 
拉过来了!真是个好管理员,给你32个赞。,刚好32个
此帖出自编程基础论坛
 
 
 

回复

1403

帖子

1

TA的资源

纯净的硅(中级)

4
 
基础不牢,左摇右晃
此帖出自编程基础论坛
 
个人签名HELLO_WATER
 
 

回复

613

帖子

2

TA的资源

纯净的硅(初级)

5
 
look look 看了一下,相当OK噢
女神发贴就是棒棒哒
此帖出自编程基础论坛
 
个人签名我是一头搞电子的猪,猪是一种好色的动物,猪八戒就是代表.       
 
 

回复

732

帖子

2

TA的资源

纯净的硅(中级)

6
 
此帖出自编程基础论坛
 
个人签名亚里士缺德
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

7
 
查看本帖全部讨论,请登录或者注册
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

8
 
查看本帖全部讨论,请登录或者注册
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【干货上新】电源解决方案和技术第二趴 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 14

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表