枚举enum

创建符号常量,可以代替const。还可以定义新类型,但必须严格的限制进行。

1 enum spectrum {red, orange, green, blue}
  • red等作为符号常量,对应整数值0-3
  • 这些常量叫做枚举量

声明:

1 spectrum band;

在不进行强制类型转换的情况下,真能将定义枚举时使用的枚举量赋给这种枚举的变量。

1 band = red; //正确
2 band = 2000; //错误!

枚举只定义了赋值运算符。


枚举量是整型,可以被提升为int类型,但int类型不能自动转换为枚举类型。

1 int color = blue;
2 color = 3 + red; //red会被自动转换成int

如果int值是有效的,则可以通过强制类型转换,将它赋给枚举变量。

1 band = spectrum(2);

枚举常用来定义相关的符号常量,而不是新类型。如果打算只使用符号常量,而不创建枚举类型的变量,可以省略枚举类型的名称:

enum {red, green, blue};

设置枚举量的值

1 enum bits{one=1, two=2, three=3};//指定的值必须是整数
2 
3 enum bigstep {first, second=1000, third};//first默认为0,后面没有被初始化的枚举量的值比前面的枚举量值大1,third=1001
4 
5 enum {zero, null=0, one, numer=1};//zero=0,one=1

枚举的取值范围

1 enum bits{one=1, two=2, three=8};
2 bits myflag;
3 myflag bits(6);//6不是枚举值,但是位于枚举定义的取值范围。

取值范围寻找方法:

  • 上限:大于最大值的最小的2的幂,再减一
    • 2^4=16 > 8 ,16-1 = 15,所以上限为15
  • 下限:如果最小值大于0,则下限为0;付过最小值小于0,计算方法同上限的计算方法,加符号。
原文地址:https://www.cnblogs.com/pacino12134/p/10973556.html