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 。