如果枚举不能装入整型,会发生什么情况?
What happens if an enum cannot fit into an integral type?
我遇到了这个关于枚举的底层类型的问题,其中一个答案引用了标准c++ 7.2/5:
枚举的基础类型是一个整型,可以表示枚举中定义的所有枚举数值。整数类型作为枚举的基础类型是由实现定义的,除非枚举数的值不能装入int或unsigned int类型,否则基础类型不能大于int。
这对于所有合理的情况都是非常清楚的。但是,如果我把枚举设置得如此之大,以至于它甚至不能放入一个long long中,会发生什么?
(我不知道为什么这种情况会在实践中发生,但也许我感觉破坏性和有一个自由的下午)
这个行为是由标准定义的吗?
enum foo : int
{
bar = INT_MAX,
oops
};
和类似的undefined。
我在这里欺骗了一点,强制类型为int
,但这同样适用于您的平台上可用的最大整型。
相关文章:
- typedef 枚举和枚举类有什么区别?
- 使用枚举作为条件,if 条件将返回什么,真或假?
- 我们应该如何使用枚举类进行索引(或者我们应该更好地避免这种情况)?
- 如何在没有映射的情况下在枚举和字符串之间进行转换?
- 将枚举与 CMake 链接的正确方法是什么?
- 如何在不实例化派生类的情况下管理一组派生类枚举
- 调用模板化类内的枚举类枚举器的正确语法是什么
- 如何在不指定枚举的情况下将 SFINAE 用于枚举?
- 在C++中向枚举添加"all"选项的好设计是什么?
- 我应该使用什么而不是模板的枚举
- 在Visual Studio中定义与Typedef枚举发生冲突的原因是什么?
- 将此枚举传递给 CTOR 有什么问题?
- C++中的标签和枚举调度有什么区别
- 在 .NET 中调用 COM 枚举器的正确方法是什么?
- 设计问题:枚举或函数或其他什么
- 在枚举上使用的正确铸件是什么
- 当枚举具有重复值时,如果将int值强制转换为枚举会发生什么情况
- 如果枚举不能装入无符号整型,会发生什么情况?
- 如果枚举不能装入整型,会发生什么情况?
- 什么是枚举类,我为什么要关心?