C++基础---枚举

来源:互联网 发布:spring源码视频百度云 编辑:程序博客网 时间:2024/06/07 18:30

1. 枚举

1.1 枚举

  • 枚举:是一个被命名的整型常数的集合,枚举在日常生活中很常见。
  • 枚举常量:利用枚举常量,可用文字来代替数字,这样做可以使程序变得更加易懂。例如:
    (1)定义了一个枚举类型名 enum WeekDay,然后定义变量为该枚举类型。
    enum WeekDay{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY};
    enum WeekDay day;

    (2)当然,也可以直接定义枚举类型变量。
    enum WeekDay{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY} day;

1.2 枚举的使用注意点

  • 枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。
    因为是常量,所以不能对枚举元素进行赋值。例如:
    对枚举WeekDay的元素再作以下赋值 SUNDAY=5;MONDAY=2;SUNDAY=MONDAY; 都是错误的
  • 枚举元素本身默认由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。
    即枚举类型的第1个常量值默认为0。例如:
    默认情况下在WeekDay中,SUNDAY值为0,MONDAY值为1,…,SATURDAY值为7。
    如果在定义枚举类型时指定元素的值,也可以改变枚举元素的值。例如:
    enum WeekDay{SUNDAY=7,MONDAY=1,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY}day;
    这时,sun 为 7,mon 为 1,以后元素顺次加 1,所以 SUNDAY值为7,MONDAY值为1,…,SATURDAY值为6。
    注:当枚举中的某个成员赋值后,其后的成员按依次加1的规则确定其值。
  • 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。
    如:WeekDay a; WeekDay b; a=SUNDAY; b=MONDAY; 是正确的。而a=0; b=1; 是错误的。
    如一定要把数值赋予枚举变量,则必须用强制类型转换,如: a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue; 还应该说明的是枚举元素不是字符常量也不是字符串常量, 使用时不要加单、双引号。
  • 枚举值可以用来作判断。
    枚举值的比较规则是:按其在说明时的顺序号比较,如果说明时没有人为指定,则第一个枚举元素的值认作0。
    例如:MONDAY>SUNDAY,SATURDAY>FRIDAY。
  • 枚举的程序示例:

    #include<iostream>using namespace std;int main(){    enum WeekDay{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY};    WeekDay today = MONDAY;    if(today==SATURDAY || today==SUNDAY)    {        cout<<"双休日"<<endl;    }    else    {        cout<<"工作日"<<endl;    }    system("pause");    return 0;}=>工作日

1.3 使用枚举类型对变量进行声明

  • 方法一:枚举类型的定义和变量的声明分开

    enum DAY{    MON=1, TUE, WED, THU, FRI, SAT, SUN};DAY yesterday;DAY today;enum DAY tomorrow;//变量 tomorrow的类型为枚举型enum DAYenum DAY good_day, bad_day;//变量good_day和bad_day的类型均为枚举型enum DAY
  • 方法二:类型定义与变量声明同时进行

    enum DAY{    MON=1, TUE, WED, THU, FRI, SAT, SUN} day;//变量day的类型为枚举型enum DAY
  • 方法三:用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明

    typedef enum DAY{    MON=1, TUE, WED, THU, FRI, SAT, SUN} day;//此处的day为枚举型enum DAY的别名day today, tomorrow; //变量today和tomorrow的类型为枚举型day,也即enum DAY
    enum DAY中的DAY可以省略:typedef enum{    MON=1, TUE, WED, THU, FRI, SAT, SUN} day;//此处的day为枚举型enum DAY的别名day today, tomorrow; //变量today和tomorrow的类型为枚举型day,也即enum DAY
    typedef enum DAY{    MON=1, TUE, WED, THU, FRI, SAT, SUN};DAY today, tomorrow; //变量today和tomorrow的类型为枚举型DAY

    注:同一个程序中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的命名常量。

1.4 枚举的总结

  • 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
  • DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
  • 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
  • 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
  • 枚举型是预处理指令#define的替代。
  • 类型定义以分号;结束。

参考文献 :
[1]《C++全方位学习》范磊——第四章
[2] 百度搜索关键字:C++数据类型、枚举、枚举值、枚举使用的注意点

0 0
原创粉丝点击