用户自定义类型:枚举类型

描述方式特殊:将该类型所有取值都一一枚举出来。

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;
}