【发布时间】:2017-05-06 22:18:43
【问题描述】:
我有枚举类型,颜色:
enum colors {green, red, blue};
colors mycolors=red 是否与int yourcolors=red 相同,每个枚举器的类型是int?两者的值都是 1,对吧?
谢谢!
【问题讨论】:
-
枚举被实现为数字(可能是 int,但可能更小),但是将它们保持在接近零的窄范围内可以允许编译器进行更多优化(例如,编译器可能决定它们可以如果有帮助,可以塞进一个字符中)。这些值实际上在内部是相同的,但您最好尽可能使用枚举,因为它们抽象出底层的数字类型。另请注意,其他相关语言在这方面比 C++ 更严格。您可以在 C++ 中交换整数和枚举,但不能在 C# 中交换(即使它将存储为数字)。
-
如果您使用 C++11 编码,只需使用
enum class。 -
mycolors的类型是colors,yourcolors的类型是int。 -
试试
bool mycolors = red;和double mycolors = red,也是1。 -
@DanielKamilKozar,为什么?并感谢杰森的解释!
标签: c++