打印

C/C++中的枚举类型enum

[复制链接]
1714|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yoyowodeai|  楼主 | 2011-1-14 15:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果你需要一个变量有几种可能存在的值,那么你就可以定义一个枚举类型的变量来表示;之所以叫做枚举类型,就是说将变量或者对象可能存在的情况(也可以说是可能存在的值)一一列举出来.
举个例子来说吧:比如有一个铅笔盒中有一支笔,但是在没打开盒子之前你并不知道盒子中装的是什么笔,可能是钢笔,也可能是铅笔,这里就有两种可能,那么你就可以定义一个枚举类型来表示它:enum Box{pencil,pen};这就定义了一个枚举类型Box,这个枚举类型包含两个元素(pencil和pen),分别叫做铅笔和钢笔,这两个元素称为枚举元素;而使用枚举类型定义的变量称为枚举变量;
注意1:如果要定义两个具有同样特性枚举类型的变量,可以有如下的两种定义方式:
enum Box{pencil,pen};  //声明枚举类型Box;
enum Box box1,box2;    //定义枚举变量box1,box2;

再有一种定义方式就是在声明枚举类型的同时进行定义:
enum {pencil,pen} box1, box2;
对于枚举变量中的枚举元素,系统是按照常量来处理的,所以枚举元素又叫枚举常量;它们是不能进行普通的算数赋值运算的,也就是说它们的值是不能被改变的,比如:pencil=1;这个操作是错误的;但是可以在声明枚举类型的同时进行初始化的赋值操作:enum box{pencil=1,pen=2};
注意2:如果你不对枚举变量中的枚举元素进行赋值操作,那么枚举元素将会被系统自动从0开始递增,第一个枚举元素的值为0,第二个枚举元素的值为1,第三个枚举元素的值为2,等等,依次类推;如果你为枚举类型中的一个枚举元素赋了值,而没有为其余枚举元素赋值,那么系统对下一个枚举元素的赋值操作将是把上一个枚举元素的值加1得到;后面的以此类推;而第一个枚举元素仍然是从0开始,直到你赋初值的那个元素之前的元素为止;比如:
enum Box{pencil=3,pen};  //这里枚举元素pen的值将是4;
enum Box{pencil,colorpencil,pen=4,colorpen};  //这里枚举元素pencil=0,colorpencil=1,colorpen=5;

注意3:对枚举变量来说,是不能直接赋值的,所以,对枚举变量是赋元素操作,而不能直接赋整数值;要把整数值赋给枚举变量,那么必须先把整数值的类型强制转换成对应的枚举类型;
比如:
enum Box{pencil,pen};         //声明枚举类型Box;
enum Box box1, box2, box3;    //定义枚举变量box1,box2;
box1 = 3;                     //错误,编译通不过;
box1 = (enum Box)3;           //OK,强制转换后,编译通过;
box2 = box1;                  //两个枚举变量之间进行赋值;
box3 = pen;                   //给枚举变量box3赋枚举元素的值pen;

注意4:枚举类型,枚举变量,枚举元素/枚举常量,不能对枚举元素赋值(声明时除外),对枚举变量赋元素值,这几个概念;
总结:
枚举类型的定义格式如下:
enum <枚举类型名> {<枚举元素/常量表>};

枚举变量的定义格式如下:
enum <枚举类型名> <枚举变量名表>;  //多个枚举变量名之间用逗号隔开;

枚举变量的值是该枚举变量所对应的枚举类型的枚举元素表中的某一个枚举常量,而且在同一个时刻只能取该枚举元素表中的一个枚举常量;
例如,定义一个名为Day的枚举类型:
enum Day{Sun,Mon,Tue,Wed,Thu,Fri,Sat};

定义枚举类型为Day的枚举变量:
enum Day day1,day2,day3;

给枚举变量赋值:
day1 = Sun;
day2 = Sat;
day3 = Mon;

相关帖子

沙发
3B1105| | 2011-1-15 17:34 | 只看该作者
就是定义一种变量,这些变量只能用它的几种可能赋值

使用特权

评论回复
板凳
即时生效| | 2011-1-15 23:07 | 只看该作者
mark

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

191

主题

1265

帖子

2

粉丝