枚举类型的定义
如果一个变量只有几种可能的值,可以定义为枚举(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");
}
输出结果: