枚举类型

2015/05/21 C和C++基础

枚举类型的定义

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

声明枚举类型用enum开头。例如:

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

上面声明了一个枚举类型weekday,花括号中sun,mon,…,sat等称为枚举元素或枚举常量。表示这个类型的变量的值只能是以上7个值之一。它们是用户自己定义的标识符。

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

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

在声明了枚举类型之后,可以用它来定义变量。如:

weekday workday,week_end;

这样workday,week_end就被定义为枚举类型weekday的变量。

在C语言中,枚举类型名包括关键字enum,以上的定义可以写为:

enum weekday workday,week_end;

在C++中允许不写enum,一般也不写enum,但保留了C的用法。

枚举变量的值只能是sun到sat之一。例如:

workday=mon;
week_end=sun;

直接定义枚举变量,如:

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

枚举变量的注意点

(1).对枚举元素按常量处理,故称枚举常量;

(2).枚举元素作为常量,它们是有值的,C++编译按定义时的顺序对它们赋值为0,1,2,3,…。也可以在声明枚举类型时另行指定枚举元素的值;

(3).枚举值可以用来做判断比较;

(4).一个整数不能直接赋给一个枚举变量。

例子程序

口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中任意取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。

#include <iostream>
#include <iomanip>

using namespace std;

int main(){
	enum color{red,yellow,blue,white,black};  //声明枚举类型color
	color pri;   //定义枚举变量pri
	int i,j,k,n=0,loop;
	for(i=red;i<=black;i++){
		for(int j=red;j<=black;j++){
			if(i!=j){
				for(k=red;k<=black;k++){
					if(k!=i&&k!=j){
						n=n+1;
						cout<<setw(3)<<n;  //输出n的值
						for(loop=1;loop<=3;loop++){
							switch(loop){
							case 1:pri=color(i);break; //color(i)强制类型转换
							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;
							default:break;
							}
						}
						cout<<endl;
					}
				}
			}
		}
	}
	cout<<"total:"<<n<<endl;
	system("pause");
}

输出结果:

Search

    Post Directory