| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 977 人关注过本帖
标题:枚举的取值范围
只看楼主 加入收藏
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
好吧。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-06 16:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 楼主 蚕头燕尾
不要这样用!

授人以渔,不授人以鱼。
2013-08-09 12:17
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
回复 12楼 TonyDeng
哦哦,可是这到底有什么坏处吗?


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-09 13:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
枚举,是列举的意思,即区别每一个个体,尽管这(被枚举出来的)一系列个体是同一类别的性质,但个体之间有差异,其差异就用不同的数值区别出来,这个用于区别的数值类型其实是任意的,既可以是整数,也可以是浮点数,但重点是互相之间能夠区别,所以最佳的数据类型是使用整数。区别值用整数,不等于枚举中的每个元素就是整数,这是逻辑上的问题,对枚举来说,每个元素的区别值具体是什么,其实是不相干的,你设定one=1、two=2,实际上也可以设定one=2、two=10,只要one和two是不同的元素、而且它们的排序结果与需要吻合(one在two的前面),那些元素值就可以是任意的。现在,你应该明白了,当把1视为one的时候,你就是错的,在逻辑上1并不是one,one就是one,不是别的什么,可以视one为1,但1不必然是one。

正如上述,枚举只是列举,必然是有限集合,你定义中列明了集合中的具体元素,就只有那些,没有别的。1楼的代码,枚举集合中没有值为6的元素,编译可以通过,运行的结果myflag的值也为6,但是这个值并不是bits枚举集合中的,仅仅是一个整数罢了,在理论上,编译器不该让这种代码通过,能让这种代码通过是语言和编译器的缺陷。依据你的设想,six才是6,我们只能使用myflag = six这样的语句。不管是硬编码还是暗藏用法,所有使用枚举内部值的方式都是误用枚举。在C#中,枚举的机制比C/C++完善得多,在那里,输出one的结果是one字样,而不是内部编码值1。

[ 本帖最后由 TonyDeng 于 2013-8-9 13:51 编辑 ]

授人以渔,不授人以鱼。
2013-08-09 13:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
ASCII编码和各种字符编码,其实就是枚举性质。

授人以渔,不授人以鱼。
2013-08-09 13:49
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
回复 15楼 TonyDeng
嗯嗯,长知识啦~~

谢谢版主~~


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-10 13:59
快速回复:枚举的取值范围
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029660 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved