设为首页 加入收藏

TOP

4.6.2 枚举的取值范围
2013-10-07 15:39:05 来源: 作者: 【 】 浏览:77
Tags:4.6.2 枚举 范围

4.6.2  枚举的取值范围

最初,对于枚举来说,只有声明中指出的那些值是有效的。然而,C++(www.cppentry.com)现在通过强制类型转换,增加了可赋给枚举变量的合法值。每个枚举都有取值范围(range),通过强制类型转换,可以将取值范围中的任何整数值赋给枚举变量,即使这个值不是枚举值。例如,假设bits和myflag的定义如下:

 
则下面的代码将是合法的:
 

其中6不是枚举值,但它位于枚举定义的取值范围内。

取值范围的定义如下。首先,要找出上限,需要知道枚举量的最大值。找到大于这个最大值的、最小的2的幂,将它减去1,得到的便是取值范围的上限。例如,前面定义的bigstep的最大值枚举值是101。在2的幂中,比这个数大的最小值为128,因此取值范围的上限为127。要计算下限,需要知道枚举量的最小值。如果它不小于0,则取值范围的下限为0;否则,采用与寻找上限方式相同的方式,但加上负号。例如,如果最小的枚举量为 6,而比它小的、最大的2的幂是 8(加上负号),因此下限为 7。

选择用多少空间来存储枚举由编译器决定。对于取值范围较小的枚举,使用一个字节或更少的空间;而对于包含long类型值的枚举,则使用4个字节。

C++(www.cppentry.com)11扩展了枚举,增加了作用域内枚举(scoped enumeration),第10章的"类作用域"一节将简要地介绍这种枚举。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.7 指针和自由存储空间 下一篇4.7.3 指针和数字

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)