随笔-34  评论-108  文章-0  trackbacks-0
    枚举符也可以用整型的常量表达式进行初始化。如果某个枚举中所有枚举值均非负,该枚举的表示范围就是[0:2^k-1],其中2^k能使所有枚举符位于此范围内的最小的2的幂。如果存在负的枚举符值,该枚举的表示范围就是[-2^k,2^k-1]。
    一个整型值可以显示的转换成一个枚举值,除非这种转换的结果位于枚举的表示范围之内,否则就是无定义的。举例如下:
enum flag {x=1,y=2,z=4,e=8};  //表示范围为0:15
flag f1=5;  //类型错,5不是flag类型
flag f1=flag(5);  //可以,flag(5)是flag类型且在flag的表示范围内
flag f1=flag(99);  //无定义,99不在flag的表示范围内

    一个枚举的sizeof就是某个能够容纳其范围的整型的sizeof,而且不会大于sizeof(int)。


   
posted on 2007-01-10 08:52 探丫头 阅读(1115) 评论(4)  编辑 收藏 引用 所属分类: 编程语言——C++

评论:
# re: 枚举的表示范围 2007-01-10 11:27 | pengkuny
第一次听到,谢谢  回复  更多评论
  
# re: 枚举的表示范围 2007-01-10 11:42 | 平凡小草
不客气,我也是第一次看到,就记录下来和大家分享  回复  更多评论
  
# re: 枚举的表示范围 2007-01-12 09:12 | 疯蝶雨人
以前遇到一个问题,看到你的文章后想起来了,请问GetLength()和sizeof()在使用时有什么区别啊  回复  更多评论
  
# re: 枚举的表示范围 2007-01-12 10:44 | 平凡小草
sizeof是字节数目啊,而getlength是字符个数啊,一个字符不一定就是一个字节  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理