关于C++枚举类型enum

关于C++枚举类型enum

一、何为枚举类型?
枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。

声明形式:

enum 枚举名 {变量列表}; 

例如:

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

定义枚举数据类型变量,例如:

Weekday myweekday;

(注意数据类型是Weekday而不是enum Weekday)

二、枚举类型应用说明

1,枚举元素具有默认数值,它们依次为:0,1,2,3,...。例如上例中SUN的值为0,MON的值为1,TUE为2,...,SAT为6。

2, 也可以在声明中另行定义枚举元素的值,如:

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

定义SUN为7,MON为1,以后顺序加1,TUE为2,WED为3,...,SAT为6。
3, 对枚举元素按常量处理,但不能对它们直接赋予常量值。例如,下面的的语句是错误的:

 SUN=7;//SUN是枚举元素,不能直接赋予常量值

如需要将整数附值给枚举变量,应进行强制类型转换,例如:

SUN=(Weekday)7;//在值前面加(类型)是常用的强制类型转换方法

4,枚举值可以进行关系运算:
1)可以使用关系运算符来比较两个枚举变量。例如,以下 if 语句判断存储在 myweekday1中的值是否小于存储在 myweekday中的值:
if ( myweekday1 < myweekday2)
如果 myweekday1存储的值小于 myweekday2的值,则该语句为 true。否则该语句将为 false。
2)可以使用整数值而不是符号名称来测试枚举变量。例如,以下两个 if 语句是等效的:

if  myweekday== MON)
if ( myweekday == 1)

5, 如果为枚举变量赋值,则它们必须是整数。以下赋值语句将产生错误:
enum Weekday{SUN=1.1,MON=1.2,TUE=1.3,WED=1.4,THU,FRI,SAT }; //错误

6, 枚举数据类型的目的之一是符号名称有助于使程序自我解释。但是,这些名称不是字符串,而是数值,所以在输出时,输出的是数字,而不是字符串。例如:

Weekday myweekday = SUN;
cout << myweekday;//输出的是0这个数值

输入结果如下:
输出结果

7, 枚举值可以赋给整型变量,例如:

int a;
a = SUN;//枚举值可以赋给整形变量
cout << a;

8, 因为枚举数据类型的符号名称与整数值相关联,所以它们可以在 switch 语句中使用,如下面的程序所示:
题目:口袋中有红,黄,蓝,白,黑5种颜色球若干个。每次从口袋中取出3个不同颜色的球,问有多少种取法?

 #include<iostream>
using namespace std;
void transfer(int i)//将相应的数值组合通过switch语句转换为字符串
{
	switch (i)
	{
	case 0:cout << "red "; break;
	case 1:cout << "yello "; break;
	case 2:cout << "blue "; break;
	case 3:cout << "white "; break;
	case 4:cout << "black "; break;
	}
}
enum ball {red,yello,blue,white,black};//定义球的枚举类型
int main()
{
	int i, j, k,count=0;
	for (int i = red; i <= black; i++)
	{
		for (int j = i+1; j <= black; j++)
		{	
				for (int k =j+1; k <= black; k++)
				{
					
						transfer(i);
						transfer(j);
						transfer(k);
						cout <<endl;
						count++;
					
				}
		
		}
	}
	cout << count;
	return 0;
}

运行结果:
运行结果
三,总结
当一个变量有几种可能的取值时,可以将它定义为枚举类型。枚举类型有利于程序的可读性。对枚举元素按常量处理,枚举元素具有默认数值,但不能对它们直接赋予常量值。因为枚举变量是整数,所以也可以使用关系运算符来比较两个枚举变量,并且通常配合switch语句来输出相应的值。

posted @ 2019-09-14 09:42  --believe  阅读(6675)  评论(0编辑  收藏  举报