欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++ 枚举

程序员文章站 2022-03-25 17:02:02
枚举 enum:创建符号常量的方式 enum spectrum { red, orange, yellow, green, blue, violet, indigo, ultraviolet }; spectrum 被称为枚举,red 等作为符号常量,这些符号常量叫做枚举量。 默认将整数值赋给枚举量 ......

枚举

  • 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 。