C++枚举类型

枚举类型比较简单,google一下说的都是一模一样。这里就简单记一下我的理解和一些需要注意的地方。

    枚举是一种用户定义的类型,当某个变量取值是几种可能存在的值时,就可以定义为枚举类型,就是把变量(对象)可能存在的取值一一列举出来。

    声明枚举类型:   enum MonthType{JAN,  FEB,  MAR,  APR,  MAY, JUN, JUL,  AUG,  SEP,  OCT,  NOV,  DEC};

    所列枚举元素的值按照所列的顺序排序,即:JAN < FEB < MAR < APR······

    枚举类型中的枚举元素命名必须符合变量命名规范,eg:

    enum letter{'A','B','C'};   //ERROR!

    enum rank{1st,2nd,3rd};  //error!  不能以数字开头

    枚举类型中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通算术赋值的,(JAN=1)这样是错误的,不过可以在声明枚举类型的时候赋值。

    enum MonthType{JAN=1,FEB=2,······};

    如果不进行元素赋值操作那么元素将会被系统从0开始递增自动赋值。若你只对第一个元素赋值,那么下一个元素进行前一个元素加1操作。

    enum MonthType{JAN=4,FEB,······};  // 这里FEB=5,MAR=6······

    那么考虑如下情况呢:

    enum some_fruit {apple = 3, orange, banana = 4, bear};
    好了,apple == 3, banana == 4; 那么orange和bear呢?记得前面说过一句,默认下”接下来的枚举子取值是前面一个枚举子的取值+1“。既然这两个枚举子没有显式赋值,那么就按照默认规则办事,所以 orange == 4, bear == 5. 从这个例子也可以看出,同一枚举中枚举子的取值不需要唯一。

    使用枚举类型,必须定义类型的变量  eg:

    MonthType thisMonth; 

    MonthType  thatMonth;

    thisMonth=JAN;  

    thatMonth=2;    //error,必须是列举的元素

    另一种定义变量的方式,在声明的时候定义:     

    enum {JAN,  FEB, ······} nextDay;      //这是一种匿名类型定义

    nextDay=FEB;  

    

    使用强制类型转换来增量枚举类型变量值:

     thisMonth=JAN;

     thatMonth=thisMonth;    //right

     nextMonth=thisMonth++;   //compile error!

     nextMonth = MonthType(thisMonth+1);   //  0+1   MonthType(thisMonth++)也错

     cout<<nextMonth;   //1  

 

     用于做循环语句控制变量:

     for  (MonthType month = JAN ;  month <= DEC ;  month = MonthType (month + 1 ) ){···}

 

     1.枚举类型可以用于swith...case语句;

     2.枚举类型不支持直接的cin>>和cout<<; 

            cin>>thisMonth;        //error,接受参数类型

           cout<<nextMonth;      //输出为其标号

     3.枚举元素之间比较可以用一下6个操作符: <,>,<=,>=,==.!=

     4.枚举类型可作为函数的返回类型。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值