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

  • 相关阅读:
    【Sqoop】介绍、安装、使用(列出MySQL中数据库/表 + mysql数据导入到Hive表 + Hive表数据导出到mysql表)
    【异常】MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on di
    【异常】Flume启动卡主异常:Agent configuration for 'a2' does not contain any valid channels. Marking it as invalid.
    【异常】转载 kafka.common.MessageSizeTooLargeException
    【异常】转载 ERROR KafkaProducer
    【异常】转载 如何优雅地关闭kafka
    【异常】转载 KAFKA生产者数据丢失问题的排查
    【异常】java.lang.ClassCastException: org.apache.spark.rdd.ShuffledRDD cannot be cast to org.apache.spark.streaming.kafka010.HasOffsetRanges
    mmap
    链表
  • 原文地址:https://www.cnblogs.com/riskyer/p/3356249.html
Copyright © 2011-2022 走看看