【C++】枚举类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN___CSDN/article/details/82946077

如果一个变量只能有几种可能的值,可以定义为枚举类型。所谓“枚举”就是把变量的值一一列出来,变量的值只能在列出来的值的范围内。

声明枚举类型的一般形式:

enum 枚举类型名 {枚举常量表}

enum weekday {sun,mon,tue,wed,thu,fri,sat};
weekday workday,week_end;

注意:

1、不能对枚举元素赋值。

sun = 0; mon = 0;//错误,不能用赋值语句对枚举常量赋值

2、枚举值可以做比较判断。

if (workday == mon)	...;
if (workday > sun)	...;

3、不能把一个整数直接赋值给一个枚举变量。枚举变量只能接受枚举类型的数据。

workday = tue;
workday = 2;//错误,它们属于不同类型
workday = weekday(2);//C++风格的强制转换
workday = (weekday)2;//C语言风格的强制转换

 e.g.

口袋中有红、黄、蓝、白、黑五种颜色,每次从口袋中任取三个球,取到三种不同颜色的可能取法

运行环境:VS2017

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	enum color {red,yellow,blue,white,black};
	color pri;
	int i, j, k, n = 0, loop;
	for (i = red; i <= black; i++)
	{
		for (j = red; j <= black; j++)
		{
			if (i != j)
			{
				for (k = red; k <= black; k++)
				{
					if (k != i && k != j)
					{
						n++;
						cout << setw(3) << n;
						for (loop = 1; loop <= 3; loop++)
						{
							switch (loop)
							{
								case 1:pri = color(i); break;
								case 2:pri = color(j); break;
								case 3:pri = color(k); break;
								default:break;
							}
							switch (pri)
							{
								case red:cout << setw(8) << "red"; break;
								case yellow:cout << setw(8) << "yellow"; break;
								case blue:cout << setw(8) << "blue"; break;
								case white:cout << setw(8) << "white"; break;
								case black:cout << setw(8) << "black"; break;
							}
						}
						cout << endl;
					}
				}
			}
		}
	}
	cout << "total:" << n << endl;
	return 0;
}

 以下是运行结果:

  1     red  yellow    blue
  2     red  yellow   white
  3     red  yellow   black
  4     red    blue  yellow
  5     red    blue   white
  6     red    blue   black
  7     red   white  yellow
  8     red   white    blue
  9     red   white   black
 10     red   black  yellow
 11     red   black    blue
 12     red   black   white
 13  yellow     red    blue
 14  yellow     red   white
 15  yellow     red   black
 16  yellow    blue     red
 17  yellow    blue   white
 18  yellow    blue   black
 19  yellow   white     red
 20  yellow   white    blue
 21  yellow   white   black
 22  yellow   black     red
 23  yellow   black    blue
 24  yellow   black   white
 25    blue     red  yellow
 26    blue     red   white
 27    blue     red   black
 28    blue  yellow     red
 29    blue  yellow   white
 30    blue  yellow   black
 31    blue   white     red
 32    blue   white  yellow
 33    blue   white   black
 34    blue   black     red
 35    blue   black  yellow
 36    blue   black   white
 37   white     red  yellow
 38   white     red    blue
 39   white     red   black
 40   white  yellow     red
 41   white  yellow    blue
 42   white  yellow   black
 43   white    blue     red
 44   white    blue  yellow
 45   white    blue   black
 46   white   black     red
 47   white   black  yellow
 48   white   black    blue
 49   black     red  yellow
 50   black     red    blue
 51   black     red   white
 52   black  yellow     red
 53   black  yellow    blue
 54   black  yellow   white
 55   black    blue     red
 56   black    blue  yellow
 57   black    blue   white
 58   black   white     red
 59   black   white  yellow
 60   black   white    blue
total:60

猜你喜欢

转载自blog.csdn.net/CSDN___CSDN/article/details/82946077