枚举

enum{red,orange,yellow,green,blue,violet,indigo,ultraviolet};

spectrun band = 3; //invalid

spectrum band = spectrum(x);//x should be valid.

int coloer = blue;//valid


枚举的取值范围

最初,对于枚举来说,只有声明中之处的那些值是有效的。然而,C++现在通过强制类型转换,增加了可赋给枚举变量的合法值。

每个枚举都有取值范围(range),通过强制类型转换,可以将取值范围中的任何整数赋给枚举变量,即使这个值不是枚举值。

例如,假设bits和myflag的定义如下;

enum bits{one = 1,two = 2,four = 4,eight = 8};

bits myflag;

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

myflag = bits(6);//valid,because 6 is in bits range

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

取值范围的定义如下。首先,要找出上限,需要知道枚举量的最大值。找到大于这个最大值的、最小值的2的幂,将它减去1,得到的便是取值范围的上限。

例如,前面定义的bigstep的最大值枚举值是101。在2的幂中,比这个数大的最小值为128,因此取值范围的上限为127。要计算下限,需要知道枚举量的最小值。

如果它不小于0,则取值范围的下限为0;否则,采用与寻找上限方式相同的方式,但加上负号。

例如,如果最小的枚举量为-6,而比它小的、最大的2的幂是-8(加上负号),因此下限为-7。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值