现在的位置: 首页 > 综合 > 正文

c\c++复习基础要点16—-枚举类型

2018年02月21日 ⁄ 综合 ⁄ 共 2258字 ⁄ 字号 评论关闭

枚举类型:

   语法格式:

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

例如:

     enum  Weekday{sun, mon, tue, wed, thu, fri, set};

声明了枚举类型后,就可以定义枚举类型的变量了。定义枚举变量的语法格式为:

 

enum 枚举类型名  标示符;

枚举类型名  标示符;

 

例如:

     enum  Weekday aday;

也可以把声明枚举类型和定义枚举类型变量合为一步:

     enum{变量列表} 标示符;

 

例如:

     enum {sun, mon, tue, wed, thu, fri, set} aday;

变量aday的值只能是sun到sat之一

 

声明枚举类型时,变量值列表中的标示符是一些符号常量,每一个都对应一个确定的整数值。第一个符号常量的值为0,第二为1,以此类推。

也可以在声明枚举类型时自行制定符号常量的值,制定的值必须是整数。

例如:

enum Weekday{sun, mon , tue=5, wed, fri,sat};

其中,sun=0、mon=1、tue=5、wed=6、….sat=9.

 

不能把一个整数值直接赋值给一个枚举类型的变量:

aday=2;       //错误

 

但是可以通过强制类型转换将整数赋值给枚举类型的变量。

例如:

aday=(Weekday)2;

 

实例:

#include<iostream>

using namespace std;

 

void main()

{

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

     Weekday  day1 , day2;

     int  in1,in2;

     cout<< “请输入两个0到6之间的整数:”<<endl;

      cin>>in1>>in2;

      day1=(Weekday)in1;

      day2=(Weekday)in2;

      

      if(day1==day2)

      {

           cout<< “您输入的都是”;

           switch(day1)

           {

                 case sun: cout<< “星期日”<<endl; break;

                 case mon: cout<< “星期一”<<endl; break;

                 case tue: cout<< “星期二”<<endl; break;

                 case wed: cout<< “星期三”<<endl; break;

                 case thu: cout<< “星期四”<<endl; break;

                 case fri: cout<< “星期五”<<endl; break;

                 case sat: cout<< “星期六”<<endl; break;

 

           }

      }

      else

      {

           cout<< “您输入的两天分别是:”;

           switch(day1)

           {

                 case sun: cout<< “星期日”<<endl; break;

                 case mon: cout<< “星期一”<<endl; break;

                 case tue: cout<< “星期二”<<endl; break;

                 case wed: cout<< “星期三”<<endl; break;

                 case thu: cout<< “星期四”<<endl; break;

                 case fri: cout<< “星期五”<<endl; break;

                 case sat: cout<< “星期六”<<endl; break;

 

           }

           

           switch(day2)

           {

                 case sun: cout<< “星期日”<<endl; break;

                 case mon: cout<< “星期一”<<endl; break;

                 case tue: cout<< “星期二”<<endl; break;

                 case wed: cout<< “星期三”<<endl; break;

                 case thu: cout<< “星期四”<<endl; break;

                 case fri: cout<< “星期五”<<endl; break;

                 case sat: cout<< “星期六”<<endl; break;

 

           }

 

 

      }

}

 

 

一道面试题:

 

下面代码片段的输出是:

enum{

 A ,B , C = 1 ,D,

};

 

std::cout<<B<< ‘ ’<<D<<std::endl;

 

A 1 1 B 1 2  C 2 1  D 2 2

 

答案:B

 

默认下”接下来的枚举子取值是前面一个枚举子的取值+1“。既然这两个枚举子没有显式赋值,那么就按照默认规则办事,所以B==1,D==2 从这个例子也可以看出,同一枚举中枚举子的取值不需要唯一。

抱歉!评论已关闭.