枚举类型用于值是确定的某几个值的变量。枚举类型是定义如下:
#include<iostream>
using namespace std;
int main(){
enum Day {Monday, Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};//定义一个枚举类型
Day A=Tuesday;//定义个Day变量并赋值
cout<<"A="<<A<<endl;
return 0.
}
输出:
A=0
注意:1,这里枚举类型定义时,{}中的元素称为枚举元素,他们都按常量处理。2,枚举元素作为常量,它们是有值的,C++编译按定义时的顺序对它们赋值为0,1,2,3,…。也可以在声明枚举类型时另行指定枚举元素的值。3, 枚举值可以用来做判断比较。4, 一个整数不能直接赋给一个枚举变量。
我们也可以在定义枚举类型时直接定义变量。
此外枚举元素的值是依次递增的。
###我们怎样输出枚举元素名称,我们可以使用Switch语句来实现:
#include<iostream>
using namespace std;
int main(){
enum color {red,blue,black,yellow,white};
color A=blue;
switch(A){
case red:cout<<"red"<<endl;break;
case blue:cout<<"blue"<<endl;break;
case black: cout<<"black"<<endl;break;
case yellow:cout<<"black"<<endl;break;
case white:cout<<"white"<<endl;break;
default:break;
}
return 0;
}
输出:
blue
注意enum可以直接复制给整型变量(整型还是整型没有变成enum),但是整型不可以直接复制给enum。但是我们可以通过强制类型转换将整型转换为enum。比如:
#include<iostream>
#include<typeinfo>
using namespace std;
int main(){
enum Color {red,yellow,blue,white,black};
Color color=red;
int i,j,k;
i=color;
cout<<i<<endl;
cout<<typeid(i).name()<<endl<<typeid(Color(i)).name()<<endl;
return 0;
}
输出:
0
i
Z4mainE5Color
这里写一个代码是关于排列组合的(题目来自百度百科),有red,yellow,blue,white,black五种颜色,输出依次抽出三种颜色都不相同的组合(有顺序区别的),代码如下:
#include<iostream>
#include<typeinfo>
using namespace std;
void print_color(int i){
switch(i){
case 0:cout<<" red ";break;
case 1:cout<<" yellow ";break;
case 2:cout<<" blue ";break;
case 3:cout<<" white ";break;
case 4:cout<<" black ";break;
default:break;
}
}
int main(){
enum Color {red,yellow,blue,white,black};
Color color=red;
int i,j,k,loop;
for(i=red;i<=black;i++){
for(j=red;j<=black;j++){
if(i!=j){
for(k=red;k<=black;k++){
if((i!=k)&&(j!=k)){
print_color(i);
print_color(j);
print_color(k);
cout<<endl;
}
}
}
}
}
return 0;
}
输出:
red yellow blue
red yellow white
red yellow black
red blue yellow
red blue white
red blue black
red white yellow
red white blue
red white black
red black yellow
red black blue
red black white
yellow red blue
yellow red white
yellow red black
yellow blue red
yellow blue white
yellow blue black
yellow white red
yellow white blue
yellow white black
yellow black red
yellow black blue
yellow black white
blue red yellow
blue red white
blue red black
blue yellow red
blue yellow white
blue yellow black
blue white red
blue white yellow
blue white black
blue black red
blue black yellow
blue black white
white red yellow
white red blue
white red black
white yellow red
white yellow blue
white yellow black
white blue red
white blue yellow
white blue black
white black red
white black yellow
white black blue
black red yellow
black red blue
black red white
black yellow red
black yellow blue
black yellow white
black blue red
black blue yellow
black blue white
black white red
black white yellow
black white blue