• C++ enum


    C++ enum

    作用:增加程序可读性,用来描述状态量。

    用法:
    enum 枚举名 {
    标识符[=整型常数],

    ...
    标识符[=整型常数],

    } 枚举变量;
          如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始,依次次赋给标识符0, 1, 2, ...。
    但当枚举中的某个成员赋值后, 其后的成员按依次加1的规则确定其值。

    应用举例:
      enum color_set1 { RED, BLUE, WHITE, BLACK }; // 定义枚举类型color_set1
      enum week { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; // 定义枚举类型week

    性质:
    1. 枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值,缺省状态下,这个整数就是所列举元素的序号,序号从0开始。
    2. 可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按缺省方式取值,而指定值之后的枚举常量按依次加1的原则取值。
    3. 各枚举常量的值可以重复。例如:
      // 枚举常量apple=0,orange=1, banana=1,peach=2,grape=3。
      enum fruit_set {apple, orange, banana=1, peach, grape}
      // 枚举常量Sun,Mon,Tue,Wed,Thu,Fri,Sat的值分别为7、1、2、3、4、5、6。
      enum week {Sun=7, Mon=1, Tue, Wed, Thu, Fri, Sat};
    4. 枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量。例如,以下定义非法:
      enum letter_set { 'a','d','F','s','T' }; // 枚举常量不能是字符常量
      enum year_set{ 2000,2001,2002,2003,2004,2005 }; // 枚举常量不能是整型常量
    5. 可改为以下形式则定义合法:
      enum letter_set { a, d, F, s, T };
      enum year_set{ y2000, y2001, y2002, y2003, y2004, y2005 };
    6. 枚举变量可以直接输出,但不能直接输入。如:cin >> color3; // 非法
    7. 不能直接将常量赋给枚举变量。如: color1=1; //非法
    8. 不同类型的枚举变量之间不能相互赋值。如: color1=color3; // 非法
    9. 枚举变量的输入输出一般都采用switch语句将其转换为字符或字符串;
      枚举类型数据的其他处理也往往应用switch语句,以保证程序的合法性和可读性。


    相关操作:
    1. 枚举变量的值只能取枚举常量表中所列的值,就是整型数的一个子集。
    2. 枚举变量占用内存的大小与整型数相同。
    3. 枚举变量只能参与赋值和关系运算以及输出操作,参与运算时用其本身的整数值。例如,设有定义:
      enum color_set1 { RED, BLUE, WHITE, BLACK } color1, color2;
      enum color_set2 { GREEN, RED, YELLOW, WHITE } color3, color4;
      则允许的赋值操作如下:
        color3=RED; // 将枚举常量值赋给枚举变量
        color4=color3; // 相同类型的枚举变量赋值,color4的值为RED
        int i=color3; // 将枚举变量赋给整型变量,i的值为1
        int j=GREEN; // 将枚举常量赋给整型变量,j的值为0
    4. 允许的关系运算有:==、<、>、<=、>=、!=等,例如:
      // 比较同类型枚举变量color3,color4是否相等
      if (color3==color4) cout<<”相等”;
      // 输出的是变量color3与WHITE的比较结果,结果为1
      cout << color3 << WHITE;
    5. 枚举变量可以直接输出,输出的是变量的整数值。例如:
      cout << color3; //输出的是color3的整数值,即RED的整数值1

  • 相关阅读:
    CF899A Splitting in Teams
    CF898A Rounding
    CF914A Perfect Squares
    CF864A Fair Game
    CF909A Generate Login
    关于C++的一些函数的使用方法
    又是一个二模02,不过day2
    2模02day1题解
    二模Day2题解
    KMP算法心得
  • 原文地址:https://www.cnblogs.com/ykzou/p/4953679.html
Copyright © 2020-2023  润新知