C++枚举类型

来源:互联网 发布:淘宝类目007是什么牌子 编辑:程序博客网 时间:2024/05/01 08:58

据C++primer plus整理

C++的enum工具提供了创建符号常量的方式,这种方式可以代替const。

例:enum color{red,orange,yellow,green,blue};

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

color choice;

枚举类型还有一些特性:

在不进行强制类型转换的情况之下只能将定义枚举时使用的枚举量赋值给这种枚举的变量。

choice = blue;        //valid

choice = 2000;      //invalid

对于枚举,只定义了赋值运算符,没有定义算术运算符。

枚举量是整型,可以被提升为int类型,但int类型不能自动转换为枚举类型。

choice = red;     //valid

choice = choice+1;     //invalid

choice = 2;     //invalid

choice = red + yellow;     //invalid


int choice2 = blue;     //valid

choice2 = 1 + red;     //valid


其中choice = red  + yellow;非法的原因较复杂。虽然枚举类型没有定义+运算符,但是在用于算术表达式中时,枚举类型将被转换为整数,因此red + yellow将被转换为0 + 2,但是由于0 + 2是int类型,而将int类型直接转换为枚举类型非法,所以不能将2赋值给枚举类型choice。


如果int值是有效的,可以通过强制类型转换,把它赋值给枚举类型:

choice = color(1);


枚举的取值范围:

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

取值范围的上限:首先要找到这个枚举变量的最大值。找到大于最大值的、最小的2的幂,将它减去1,就是取值上限。如最大值是12,比这个数大的2的最小的幂是16,所以上限是15。

取值范围的下限:若枚举量的最小值不小于0,那么取值范围的下限是0;否则采用与上限方式相同的方法,但加上负号。如最小值是-6,那么下限是(-8) + 1 = -7 。



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 非法经营罪立案后不批刑拘怎么办 12分扣完了怎么办2018 驾驶证c1扣14分怎么办 车辆被扣12分怎么办 两个违章扣12分怎么办 车辆违章扣12分怎么办 一下扣了20分怎么办 违章扣了100多分怎么办 车子累计扣12分怎么办 起诉了对方不来怎么办 在监狱里被打伤了怎么办 初三要体检没去怎么办 羁押人在看守所没判刑怎么办? 在看守所关两年了还没有判刑怎么办 开麻将馆被拘留怎么办 拘留31天了我该怎么办 收到一封拘留信怎么办 存钱的收据掉了怎么办 行政拘留法制没有批的怎么办 别人起诉我我该怎么办 去钟落潭看守所送衣服要怎么办 长城宽带账号密码忘了怎么办 预约考试密码忘了怎么办 健康证预约号忘记怎么办啊 人在看守所七个月还没结果怎么办 起诉书和判决书丢了怎么办 进了看守所信用卡逾期怎么办 公安局审讯室监控影相被删除怎么办 关进看守所以前的工作怎么办 上海初中借读生学籍怎么办 外地货北京三环怎么办 谁买了小产权怎么办 狗在小区丢了怎么办 太原回迁房多余的房子怎么办 回迁房被开发商抵押怎么办 回迁房源多开发商扣房怎么办 蝈蝈叫晚上怕吵怎么办 蝈蝈总不停的叫怎么办 按揭房没拿房产证夫妻离婚怎么办 按揭房子房产证还没有到离婚怎么办 结婚7年离婚孩子怎么办