注册 登录
查看: 2114|回复: 66

一新手来说说枚举

  [复制链接]
发表于 2014-8-14 18:06:07 | 显示全部楼层 |阅读模式
本帖最后由 ii童话Bū说话 于 2014-8-14 18:28 编辑

枚举是一种数据类型
定义:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.
在C语言等计算机编程语言中是一种构造数据类型。
它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
枚举变量:指用枚举类型定义的变量.变量和参数都可以定义为枚举类型.过程的返回值也可以是枚举类型.
枚举成员枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。
每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。
他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!
例如:
  1.   enum Port
  2.   {
  3.     PTA0,  PTA1,  PTA2,  PTA3,  PTA4,  PTA5,  
  4.     PTA6=1,  PTA7,  PTA8,  PTA9,  PTA10,
  5.     PTA11, PTA12, PTA13, PTA14, PTA15,
  6.       PTA16, PTA17, PTA18, PTA19, PTA20,
  7.   } PTXn_e;
在枚举类型中声明的第一个枚举成员它的默值为零。以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。
所以,PTA0=0,PTA1=1,PTA2=2,PTA3=3,PTA4=4,PTA5=5,
PTA6=1(赋值),PTA7=2,PTA8=3,PTA4=4……

/*截图是快要出版的k60书(山外哥提供)*/
基础类型必须能够表示该枚举中定义的所有枚举数值。
枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。
没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。

枚举是一种数据类型,所以他和基本数据类型一样也可以对变量进行声明。

方法一:枚举类型的定义和变量的声明分开
  1. enum Port
  2. {
  3.     PTA0,  PTA1,  PTA2,  PTA3,  PTA4,  PTA5,  
  4.     PTA6,  PTA7,  PTA8,  PTA9,  PTA10,
  5.     PTA11, PTA12, PTA13, PTA14, PTA15,
  6.     PTA16, PTA17, PTA18, PTA19, PTA20, /*枚举成员*/
  7. };
  8. enum Port LED1;//枚举类型为enum Port 的变量LED1
  9. enum Port LED2;//LED2的变量类型为  enum Port
  10. LED1=PAT0;//变量LED1的值为0
  11. LED2=PAT6;//变量LED2的值为6
方法二:类型定义与变量声明同时进行:
  1. enum Port
  2. {
  3. PTA0,  PTA1,  PTA2,  PTA3,  PTA4,  PTA5,  
  4. PTA6,  PTA7,  PTA8,  PTA9,  PTA10,
  5. PTA11, PTA12, PTA13, PTA14, PTA15,
  6. PTA16, PTA17, PTA18, PTA19, PTA20, /*枚举成员*/
  7. }LED1,LED2;//变量LED1,LED2的类型为枚举型enum Port
  8. LED1=PTA0;
  9. LED2=PTA6;
方法三:用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明:
  1. typedef enum Port
  2.   {
  3.     PTA0,  PTA1,  PTA2,  PTA3,  PTA4,  PTA5,  
  4.     PTA6,  PTA7,  PTA8,  PTA9,  PTA10,
  5.     PTA11, PTA12, PTA13, PTA14, PTA15,
  6.     PTA16, PTA17, PTA18, PTA19, PTA20,
  7.   } PTXn_e;
  8.   
  9.   enum Port LED1;
  10.   LED1=PTA0;
  11.   
  12.   PTXn_e LED2;
  13.   LED2=PTA1;
个人理解:因为关键字 typedef 的存在,使得 enum Port 等价于 PTXn_e
typedef 的作用,我理解的是 相当于别人给自己起的小名(或者外号)。
此处 PTXn_e 等价于 enum Port  ,用法类似于宏定义。
注意:宏定义在预编译阶段, typedef 在编译时被解释。对于 enum 在 预编译阶段也是被跳过的!!!
但是它本身是一种存储类的关键字,所以与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。

关键字 typedef 的详细用法介绍移步 http://www.vcan123.com/forum.php?mod=viewthread&tid=399

注:在K60的程序中的典型用法为:
游客,如果您要查看本帖隐藏内容请回复

也可以:
  1. typedef enum
  2. {
  3.   LED0,
  4.   LED1,
  5.   LED2,
  6.   LED3,
  7.   LED_MAX,
  8. }LED_e;//此时的LED_e是枚举型为 enum LED_e 的别名(外号)
山外哥出的每日一题!测试一下!
http://www.vcan123.com/forum.php?mod=viewthread&tid=1183&highlight=typedef





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

回复

使用道具 举报

 楼主| 发表于 2014-8-14 18:06:26 | 显示全部楼层
自己占沙发!!
回复 支持 反对

使用道具 举报

发表于 2014-8-14 20:23:35 | 显示全部楼层
我就看到到这几个“快要出版的k60书(山外哥提供)”关键词,,,什么时候的事儿
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-14 22:57:58 | 显示全部楼层
gsc617 发表于 2014-8-14 20:23
我就看到到这几个“快要出版的k60书(山外哥提供)”关键词,,,什么时候的事儿

呃!快了!书就快出来了!
回复 支持 反对

使用道具 举报

发表于 2014-8-15 11:04:15 | 显示全部楼层
ii童话Bū说话 发表于 2014-8-14 22:57
呃!快了!书就快出来了!

出版社那边说到8月底左右出。现在是教材出版的高峰时间,所以会比较慢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-15 20:28:40 | 显示全部楼层
山外メ雲ジ 发表于 2014-8-15 11:04
出版社那边说到8月底左右出。现在是教材出版的高峰时间,所以会比较慢

这这这……这是在坑人么……出版社好坑……
回复 支持 反对

使用道具 举报

发表于 2014-8-15 20:29:49 | 显示全部楼层
ii童话Bū说话 发表于 2014-8-15 20:28
这这这……这是在坑人么……出版社好坑……

现在都8月中旬啦,今天的进度如何?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-15 20:31:39 | 显示全部楼层
山外メ雲ジ 发表于 2014-8-15 20:29
现在都8月中旬啦,今天的进度如何?

啊啊啊!!!我去……我看错日期了……我看的是阴历……阴历七月二十!!!进度的话!巩固巩固基础!把基础扎牢再往下进行!分析程序呢!!
回复 支持 反对

使用道具 举报

发表于 2014-8-19 10:46:49 | 显示全部楼层

这有十五个字了没啊。。。。。。
回复 支持 反对

使用道具 举报

发表于 2014-8-19 16:33:58 | 显示全部楼层
k60后就没碰过了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-19 18:48:05 | 显示全部楼层
玉木 发表于 2014-8-19 16:33
k60后就没碰过了

这是基本知识撒!!!!
回复 支持 反对

使用道具 举报

发表于 2014-8-20 08:57:24 | 显示全部楼层
不错的资料。。。
回复 支持 反对

使用道具 举报

发表于 2014-8-21 00:22:06 | 显示全部楼层
恩恩。。明白了。。
回复 支持 反对

使用道具 举报

发表于 2014-9-6 23:54:32 | 显示全部楼层
看看 典型用法!   走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2014-9-25 15:30:57 | 显示全部楼层
看看答案啦
回复 支持 反对

使用道具 举报

发表于 2014-10-5 18:53:53 | 显示全部楼层
学习学习~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2014-10-6 18:22:04 | 显示全部楼层
不懂,想知道啊
回复 支持 反对

使用道具 举报

发表于 2014-10-16 20:12:55 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2014-10-19 20:03:14 | 显示全部楼层
学习一下,涨姿势!
回复 支持 反对

使用道具 举报

发表于 2014-11-18 17:20:03 | 显示全部楼层
菜鸟飘过
回复 支持 反对

使用道具 举报

发表于 2014-11-29 18:11:05 | 显示全部楼层
楼主,谢谢了!
回复 支持 反对

使用道具 举报

发表于 2014-11-29 18:31:42 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

发表于 2014-12-6 15:40:43 | 显示全部楼层
好的不行啊?收藏啊!
回复 支持 反对

使用道具 举报

发表于 2015-1-6 16:03:03 | 显示全部楼层
学学学学学

回复 支持 反对

使用道具 举报

发表于 2015-1-8 22:01:56 | 显示全部楼层
学习了!
回复 支持 反对

使用道具 举报

发表于 2015-1-9 01:50:51 | 显示全部楼层
楼主是高手
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2015-1-23 17:18:27 | 显示全部楼层
又学到东西啦,谢谢
回复 支持 反对

使用道具 举报

发表于 2015-2-3 14:42:10 | 显示全部楼层
枚举以前都没看过,这下要好好看看
回复 支持 反对

使用道具 举报

发表于 2015-2-24 23:54:53 | 显示全部楼层
感谢分享;-)
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2015-2-25 15:40:02 | 显示全部楼层
111111111
回复 支持 反对

使用道具 举报

发表于 2015-2-25 17:08:59 | 显示全部楼层
       444444444444444444
回复 支持 反对

使用道具 举报

发表于 2015-3-18 00:05:53 | 显示全部楼层
必修要学习啊~~
回复 支持 反对

使用道具 举报

发表于 2015-3-18 10:14:14 | 显示全部楼层
赞赞赞赞
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2015-8-8 10:07:56 | 显示全部楼层
不错
回复 支持 反对

使用道具 举报

发表于 2015-8-8 20:47:19 | 显示全部楼层
正想看这个呢

回复 支持 反对

使用道具 举报

发表于 2015-8-9 02:03:41 | 显示全部楼层
谢谢

回复 支持 反对

使用道具 举报

发表于 2015-9-23 23:10:57 | 显示全部楼层
看看隐藏的是什么鬼
回复 支持 反对

使用道具 举报

发表于 2015-9-27 09:53:33 | 显示全部楼层
O(∩_∩)O谢谢分享
回复 支持 反对

使用道具 举报

发表于 2015-10-6 13:53:34 | 显示全部楼层
写得好
回复 支持 反对

使用道具 举报

发表于 2015-11-14 10:40:08 | 显示全部楼层
受教啦
回复 支持 反对

使用道具 举报

发表于 2015-11-29 20:04:04 | 显示全部楼层
学习一下
回复 支持 反对

使用道具 举报

发表于 2015-12-16 18:45:21 | 显示全部楼层
谢谢分享!讲的很详细!
回复 支持 反对

使用道具 举报

发表于 2015-12-20 23:52:07 | 显示全部楼层
过来取经补充一下知识,谢楼主赐教!!
回复 支持 反对

使用道具 举报

发表于 2015-12-23 13:38:06 | 显示全部楼层
学习中。。。。。。
回复 支持 反对

使用道具 举报

发表于 2015-12-27 17:34:39 | 显示全部楼层
准备自己写库函数了,过程中有很多不懂  先来找资料
回复 支持 反对

使用道具 举报

发表于 2015-12-28 01:48:28 | 显示全部楼层
学习学习
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2016-1-5 09:06:18 | 显示全部楼层
顶顶顶
回复 支持 反对

使用道具 举报

发表于 2016-1-19 21:50:35 | 显示全部楼层
很赞
回复 支持 反对

使用道具 举报

发表于 2016-1-19 22:05:48 | 显示全部楼层
来学习
回复 支持 反对

使用道具 举报

发表于 2016-1-21 20:21:05 | 显示全部楼层
学习   
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回列表 返回顶部