在c++;枚举? 一个常数表达式的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; } #包括 int main(){ 枚举e3{min=-10,max=100000}; e3 x=e3(-1000); e3 y=e3(-10000912241); std::cout

在c++;枚举? 一个常数表达式的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; } #包括 int main(){ 枚举e3{min=-10,max=100000}; e3 x=e3(-1000); e3 y=e3(-10000912241); std::cout,c++,enums,C++,Enums,枚举的范围是基础类型的范围。编译器可能选择了一个int作为enum的基础类型 允许这样做,因为int(假设在您的平台上是32位)可以包含您给定的所有显式值 在您的平台上,您可能会发现-10000912241的类型是long或long(注意,在C++中没有负文本:-10000912241是文本10000912241的一元否定)。但是-10000912241无法放入int,因此代码的行为未定义 如果要检查enum的基础类型,请使用std::subground_type 参考:枚举的范围是基础类型的范

枚举的范围是基础类型的范围。编译器可能选择了一个
int
作为
enum
的基础类型

允许这样做,因为
int
(假设在您的平台上是32位)可以包含您给定的所有显式值

在您的平台上,您可能会发现
-10000912241
的类型是
long
long
(注意,在C++中没有负文本:
-10000912241
是文本
10000912241
的一元否定)。但是
-10000912241
无法放入
int
,因此代码的行为未定义

如果要检查
enum
的基础类型,请使用
std::subground_type


参考:

枚举的范围是基础类型的范围。编译器可能选择了一个
int
作为
枚举的基础类型

允许这样做,因为
int
(假设在您的平台上是32位)可以包含您给定的所有显式值

在您的平台上,您可能会发现
-10000912241
的类型是
long
long
(注意,在C++中没有负文本:
-10000912241
是文本
10000912241
的一元否定)。但是
-10000912241
无法放入
int
,因此代码的行为未定义

如果要检查
enum
的基础类型,请使用
std::subground_type


参考:

这很有意义,但枚举的范围是什么?枚举是应该接受所有整数值,还是只接受特定范围内基于其属性的值initialisation@Krash:将其添加到答案中。这是有意义的,但枚举的范围是什么?枚举应该接受所有整数值还是只接受一个particul中的值基于its的ar范围initialisation@Krash我建议不要使用枚举值作为整数。这是一个糟糕的设计,因为这不是使用它们的目的。也许代码>结构> /CODE是一个很好的替代品。这就是C++比一般枚举更喜欢ES的原因。我建议不要使用枚举值作为整数。它是一个糟糕的设计。S不是使用它们的目的。也许<代码>结构> /COD>是一个很好的替代。这就是C++比典型枚举更喜欢ES的原因。