C++面向对象程序设计
上QQ阅读APP看书,第一时间看更新

2.5.2 枚举类型enum

一场比赛的结果只有胜、负、平局、比赛取消4种情况;一个袋子里只有红、黄、蓝、白、黑5种颜色的球;一个星期只有星期一、星期二、…、星期日7天。上述这些数据只有有限的几种可能值,虽然可以用int,char等类型来表示,但是对数据的合法性检查却是一件很麻烦的事。例如,如果用整数0~6来代表一星期的7天,那么变量值为8便是不合法数据。C++中的枚举类型就是专门用来解决这类问题的。

只要将变量的可取值一一列举出来,便构成了一个枚举类型。枚举类型的声明形式如下:

enum 枚举类型名{变量值列表};

例如:

enum Weekday(SUN,MON,TUE,WED,THU,FRI,SAT);

对枚举元素按常量处理,不能对它们赋值。例如,下面的语句是非法的:

SUN=o;  //SUN是枚举元素,此语句非法

枚举元素具有默认值,它们依次为:0,1,2,…。例如,上例中SUN的值为0,MON为1,TUE为2,…,SAT为6。也可以在声明时另行定义枚举元素的值,如:

enum Weekday{SUN=7,MON=1,TUE,WED,THU,FRI,SAT};

定义SUN为7,MON为1,以后顺序加1,SAT为6。

枚举值可以进行关系运算。整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。

【例2-15】设某次体育比赛的结果有4种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL),编写程序顺序输出这4种情况。

分析:由于比赛结果只有4种可能,所以可以声明一个枚举类型,声明一个枚举类型的变量来存放比赛结果。

源代码:

程序运行结果: