枚举的取值范围

24 篇文章 0 订阅
6 篇文章 0 订阅

    每个枚举都有取值范围,通过强制类型转换,可以将取值范围内的任何整数赋给枚举变量,即使这个值不是枚举值.例如:假设bits和Myflag的定义如下:


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

bits bit;

则bit = bits(6);是合法的,其中,6不是枚举值,但它是属于枚举值范围内的.

    取值范围定义如下:

    首先,要找到上线,找到枚举量的最大值,找到大于这个最大值的,最小的2的幂,将它减去1,便是取值范围的上限,例如对于:

enum bigstep{first,second = 100,third};最大枚举值是101,在2的幂中,比这个值大的最小的值为128,因此取值范围上限为127.要知道下限,需要知道枚举量的最小值.如果它不小于0,则取值范围的下限为0.否则,采取与寻找上限方式同样的方式,但加上负号,例如,如果最小的枚举量为-6,则比它小的,2的幂最大的值为-8,加1之后为-7.于是,上限与下限便能算出来.


//但是论坛里有人说这个与编译器有关,若把enum的类型作为int的,取值范围为-2,147,483,648 <= X <= 2,147,483,647,若为long型,则更大.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值