如果枚举不能适合整数类型会发生什么?

时间:2016-09-21 15:30:37

标签: c++ types enums size

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

  

枚举的基础类型是一个整数类型,可以表示枚举中定义的所有枚举器值。它是实现定义的,其中整数类型用作枚举的基础类型,除了基础类型不应大于int,除非枚举器的值不能适合int或unsigned int。

对于所有合理的案例,这都很清楚。 但是,如果我的枚举如此可笑,以至于它甚至无法适应很长时间,会发生什么呢?

(我不知道为什么在实践中会发生这种情况,但也许我感觉很具破坏性并且有一个免费的下午)

此行为是否由标准定义?

1 个答案:

答案 0 :(得分:10)

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

和类似的是 undefined

我通过强制将类型强制为int来欺骗一点,但这同样适用于您平台上可用的最大整数类型。