【问题标题】:What happens if an enum cannot fit into an integral type?如果枚举不能放入整数类型会发生什么?
【发布时间】:2017-01-29 22:54:58
【问题描述】:

我遇到了this question 关于枚举的基础类型,其中一个答案引用标准 C++ 7.2/5 为:

枚举的底层类型是一个整数类型,可以表示枚举中定义的所有枚举值。使用哪种整数类型作为枚举的基础类型由实现定义,除非基础类型不得大于 int,除非枚举数的值不能适合 int 或 unsigned int。

这对于所有合理的情况都非常清楚。 但是,如果我将一个枚举设置得如此之大,以至于它甚至无法放入很长的长度,会发生什么?

(我不知道为什么在实践中会发生这种情况,但也许我觉得自己很有破坏性,下午有空)

此行为是否由标准定义?

【问题讨论】:

  • 如果您将enum 设为那么大,您的源文件将无法放入磁盘:-)
  • 我在设想一个真正可怕的头文件,枚举中有超过 2^64 个名称。那不行吗?
  • 设计起来非常简单,看我的回答。

标签: c++ types enums size


【解决方案1】:

的行为

enum foo : int
{
    bar = INT_MAX,
    oops
};

和类似的是未定义

我在这里通过将类型强制为 int 有点作弊,但同样适用于您平台上可用的最大整数类型。

【讨论】:

猜你喜欢
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多