C++:枚举类型



1. 枚举类型

某些情况下,数据的取值只有有限的几种可能。比如一场比赛只有胜、负、平局、比赛取消 4 种情况,一周只有 7 天等。虽然可以使用 int、char 类型来表示它们,但是对数据的合法性检查却是一件麻烦的事情。那么,有没有一种数据类型只有有限的几种取值,并且能自动检查数据合法性呢?答案是有的。 C++ 中的枚举类型就是专门用来解决这类问题的。

语法:

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

例如:

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

枚举类型应用说明:

  1. 对枚举元素按常量处理,不能对它们赋值。例如,下面的语句是非法的:
    SUN = 0; // SUN 是枚举元素,此语句非法
  2. 枚举类型具有默认值,它们依次为:0,1,2,…。例如,上例中 SUN 的值为 0, MON 为 1,TUE 为 2,…,SAT 为 6。
  3. 也可以在声明时另行定义枚举元素的值,如:
    // 定义 SUN 为 7,MON 为 1,以后顺序加 1,SAT 为 6。
    enum Weekday {SUN = 7, MON = 1, TUE, WED, THU, FRI, SAT};
  4. 枚举类型可以进行关系运算。
  5. 整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。

2. 一个示例

#include <iostream>
using namespace std;

enum GameResult
{
    
    
	WIN,
	LOSE,
	TIE,
	CANCEL
};

int main(int argc, char* argv[])
{
    
    
	GameResult result; // 声明变量时,可以不写关键字 enum
	enum GameResult omit = CANCEL; // 也可以在类型前面写 enum

	for (int count = WIN; count <= CANCEL; count++) // 隐含类型转换
	{
    
    
		result = GameResult(count); // 显式类型转换
		if (result == omit)
		{
    
    
			cout << "The game was canceled." << endl;
		}
		else
		{
    
    
			cout << "The game was played";
			if (result == WIN)
			{
    
    
				cout << " and we won!";
			}
			else if (result == LOSE)
			{
    
    
				cout << " and we lost.";
			}
			else
			{
    
    
				cout << ".";
			}
			cout << endl;
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/PursueLuo/article/details/104456792
今日推荐