【发布时间】:2017-11-17 08:18:29
【问题描述】:
带有常量表达式的 c++ 枚举的范围是多少?这是我的代码
#include <iostream>
int main(){
enum e3{min = -10, max = 100000};
e3 x = e3(-1000);
e3 y= e3(-100000912241);
std::cout<<x<<" "<<y<<std::endl;
}
它输出-1000 -1216664433
这是怎么回事?
此外,The C++ programming language by Bjarne Stroustrup 指定整数类型转换为枚举的结果是未定义的,除非该值在枚举范围内。这个范围是多少,如何计算?
【问题讨论】:
-
我建议不要将枚举值用作整数。这是一个糟糕的设计,因为这不是使用它们的目的。也许
struct是一个很好的替代品。这就是为什么 c++ 更喜欢 enum classes 而不是典型的枚举。