如果一个变量只能有几种可能的值,可以定义为枚举类型。所谓“枚举”就是把变量的值一一列出来,变量的值只能在列出来的值的范围内。
声明枚举类型的一般形式:
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