用户自定义类型:枚举类型
描述方式特殊:将该类型所有取值都一一枚举出来。
1.定义一个枚举类型,要求列举出该类型数据的全部可取值。
enum 枚举类型名 {变量值列表};
例:用枚举类型表示一个星期中的7天。
enum Weekday{SUN,MON,TUE,WED,THU,FRI}
2.对枚举元素按常量处理,不能对它们赋值。
例:
SUN=0;
该语句非法。
3.枚举元素具有默认值,从零开始递增,依次为0,1,2......也可以在声明另时行指定枚举元素的值。
例:
enum Weekday{SUN=7,MON=1,TUE,WED,THU,FRI}
注意:此处若未给MON赋值,则MON自动被赋值为8。
4.枚举变量的值可以直接赋值给整形。
例:
enum GameResult{WIN,LOSE,TIE,CANCEL}; int count=WIN;
此处将枚举类型数据WIN隐含转换为整形,作为整形变量count的初值。
5.整数值不能直接赋给枚举变量,如需要将整数值赋给枚举变量,应进行强制类型转换。
该整数处于枚举常量定义的范围之内,强制转换才能成功。
例:
GameResult result; result=GameResult(count);
此处为显式转换。
6.枚举值可以进行关系运算。如>、<、>=、<=、==、!=
但枚举类型不可以直接进行数学运算,因为枚举类型在运算时会被隐式转换为int等类型,
如++、--运算符,无法保证在运算后该枚举类型仍然合法。
7.实际应用
# include < iostream> using namespace std; enum GameResult (WIN, LOSE, TIE, CANCEL); . int main() { GameResult result; enum GameResult omit= CANCEL; for (int count= WIN; count <= CANCEL; count++ ){ result= GameResult (count) ; if (result== omit) cout<<"The game was cancelled“<<endl; else { cout<<"The game was played "; if (result== WIN) cout<< "and we won!"; if (result== LOSE) cout<< "and we lost."; cout<<endl ; } } return 0; }