上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种可能,所以可以声明一个枚举类型,声明一个枚举类型的变量来存放比赛结果。
源代码:
程序运行结果: