C++枚举类型

枚举类型用于值是确定的某几个值的变量。枚举类型是定义如下:

#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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值