枚举enum C++ Primer Plus

enum可以创建符号常量,定义新类型。

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

这个语句主要完成了两项工作:

1.让spectrum成为新类型的名称;spectrum被称为枚举(enumeration) 

2.red,yellow等被枚举的元素称为符号常量,对用0,1,2,...,7。这些常量被叫做枚举量

枚举的一些基本属性

可以用枚举名来声明这种类型的变量:

enum spectrum band;

其中枚举变量有一些特殊的属性,在不进行强制类型转换下,只能将定义枚举时使用的枚举量赋值给枚举变量。

band = blue;//有效

band = 2000;//无效,因为2000不属于枚举定义下的枚举量的范围内。

因此枚举变量band的赋值只能是0——7之间。

对于枚举,只有赋值运算,没有加减乘除的算术运算

band = orange;//有效

++band //无效

band = red +orange//无效

枚举量是整型,可以提升至int类型,但是 int类型不能自动转换成枚举类型:

int color = blue;//有效,枚举量blue转换成了int类型

band = 3; //无效 int无法自动转枚举类型 但是 band = green可以

color = red + 3;//有效 首先color为int类型,然后枚举量red可自动转成int类型。

band =  red + green //无效

首先算术运算在枚举枚举中出错

其次,虽然枚举量red 和green可以转为int型,但是其结果赋值给的band不为int类型,是枚举spectrum的枚举变量,故无效。

如果int值有效,即int在枚举量的范围内,则可以通过强制类型转换,将其赋值给枚举变量;

band = spectrum(3);

如果只是用常量,则可以不创建枚举变量:

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

设置枚举量的值

可以用赋值运算来显示地设置枚举量的值

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

指定的值必须是整型,也可以只显式定义部分枚举量的值:

enum bigsteo{first,second =100, third };

其中,first默认为0;后面没有被初始化的枚举量的值将会比前面的枚举量的值+1,third = 101.

最后,也可以创建多个相同数值的枚举量

enum{null, zero = 0, one, kk=1};

null == zero;

one == kk;

枚举的取值范围

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

bit myflag;

myflag = bits(6);虽然6不是枚举值,但也在枚举定义的范围内。

枚举的范围定义:

先找上限,知道最大的枚举数,然后找到比这个最大的枚举数还要大的2

的幂,再将其减1,得到的就是取值范围的上限。例如最大的枚举量为101,则在2

的幂中128比101大,再将128-1,故127即为枚举定义的上限。

再找下限,若枚举量的最小值不小于0,则0为下限,如果为负数,例如-6,则比它小的 最大的2

的幂是-8, 故-7为下限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值