• cc++复习基础要点16----枚举类型


    枚举类型:

       语法格式:

              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 从这个例子也可以看出,同一枚举中枚举子的取值不需要唯一。

  • 相关阅读:
    C# winform中 窗体缩放自适应的方法(不同电脑/不同分辨率)
    C# WinForm窗体及其控件自适应各种屏幕分辨率
    Socket网络编程
    C# Socket编程
    获取当前程序目录
    C# winfrom界面跳转闪烁问题解决方法
    C# 屏蔽windows功能键
    c#多线程调用有参数的方法
    C# winform Visual Studio Installer打包教程
    查询重复的数据
  • 原文地址:https://www.cnblogs.com/riskyer/p/3356249.html
Copyright © 2020-2023  润新知