【原创】一起学C++ 之enum ---------C++ primer plus(第6版)

枚举

定义:在默认情况下讲整数值赋给枚举量,第一个枚举量的值为0,第二个枚举量的值为1,依次+1


 

一、定义一个枚举,枚举类型,枚举量

*与C#相比个人认为C++的enum不好一点是不能通过枚举名点其中的枚举量!!!!感觉证人都不好了 T-T

enum spectrum{red,orange,yellow,green,blue,violet,indigo,ultraviolet};//他们对应的数值0~7,red,orange...这些常量叫做枚举量

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

spectrum band;

2、可以讲枚举量赋给这些枚举类型的变量:

band=blue;  //正确

band=2000; //错误,超出枚举范围

3、枚举只有复制运算,没有为枚举定义算数运算:

band=orange;        //正确;
++band;             //错误
band=orange+red;   //错误

4、枚举量是整形的,可被提升为int类型,但int类型不能自动转化为枚举:

 

int color=blue;  //正 确,枚举量是整型
band=3;       //不正确,int类型不能转换为枚举类型
color=3+red;    //正 确,color的枚举量为int型,red+3也转化为int型

5、如果int值在枚举范围内(有效的),则可以通过强制类型转换,将他赋值给枚举变量:

band=spectrum(3); //将int型3转化为枚举类型

6、如果int型数值不在枚举范围内,进行强制类型转换,结果是不确定的:

band=spectrum(40003); // undefined

二、枚举量的值,取值范围

1、显示的赋值

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

2、非显示赋值

enum bigstep{first,second=100,third};  //first为0,third为101
enum{zero,null=0,one,numer0_uno=1};    //zero为0,one为1

3、取值范围

enum bits{one=1,two=2,four34,eight=8};
bits myflag;
myflag=bits(6);//正确,6不是枚举值,但是它在1~8中间

 

posted @ 2014-09-02 13:18  CTRA王大大  阅读(735)  评论(0编辑  收藏  举报