C++ 枚举

枚举

  • enum:创建符号常量的方式
  • enum spectrum
    {
        red,
        orange,
        yellow,
        green,
        blue,
        violet,
        indigo,
        ultraviolet
    };
    

     spectrum 被称为枚举,red 等作为符号常量,这些符号常量叫做枚举量。

  • 默认将整数值赋给枚举量,第一个枚举量为 0,第二个为 1,依此类推;
  • 在不进行强制类型转换的情况下,只能将定义枚举时使用的枚举量赋给这种枚举的变量。
  • 枚举量是整型,可被提升为 int 型,但 int 类型不能自动转换为枚举类型。
  • 可以通过赋值运算符显示地设置枚举量的值,指定的值必须是整数:
    enum bits{one=1, two=2, four=4, eight=8}
    

      也可以只显式地定义其中一些枚举量地值:

    enum bigstep{first, second=100, third};
    

      注意:

    • 后面没有被初始化的枚举量的值将比其前面的枚举量大 1,first 未初始化时默认为 0.

    • 可以创建多个值相同的枚举量。
    • C++ 早期版本只能将 int 值(或提升为 int 的值)赋给枚举量,但这种限制取消了,因此可以使用 long 甚至 long long 类型的值。
  • 如果 int 值是有效的,则可以通过强制类型转换,将它赋给枚举变量;如果试图对一个不适当的值进行强制类型转换,结果是不确定的。
  • C++ 通过强制类型转换,增加了可赋给枚举变量的合法值,即使这个值不是枚举值。取值范围:
    • 上限:大于最大值的、最小的 2 的幂减去 1 。
    • 下线:找到最小值
      • 若不小于 0 ,下限为 0 。
      • 小于 0 ,采取与寻找上限方式相同,但加上负号。如 -6 对应 -8 。
原文地址:https://www.cnblogs.com/suui90/p/12563851.html