【问题标题】:Enum class default integer values [duplicate]枚举类默认整数值
【发布时间】:2019-10-17 15:06:44
【问题描述】:

是否可以对这样定义的enum class 的整数值做出任何假设?

enum class
{
    ZERO, ONE, TWO
};

【问题讨论】:

  • 我相信它们是零索引和增量的,但我不会做任何假设。实现可能是特定于编译器的。
  • @nyarlathotep108 我认为重复仍然适用,因为enum class 仍然是一个枚举声明,并且标准中引用的段落适用于任何枚举声明,包括枚举、枚举类和枚举结构。跨度>
  • @nyarlathotep108 范围和非范围枚举的默认值规则由同一段落定义。 Link 编辑:看起来这个链接的段落与重复答案中引用的段落相同。
  • @CaitLANJenner 虽然你在这种情况下是不正确的,但你是对的,最好对 c++ 持怀疑态度,并假设事情是不安全或未定义的,除非你知道其他情况。
  • @nyarlathotep108 我认为重复的规则在这里仍然适用。此外,问题非常相似,具体到枚举的标识符。这个问题链接到另一个问题的事实也是对未来读者的一个很好的暗示,它们的行为相同,并且应该为未来的读者指出一个很好的答案。我认为这将使大多数读者、初学者和专家受益。

标签: c++ c++11 enums


【解决方案1】:

是的。

每个枚举器都与一个基础类型的值相关联。当枚举器列表中提供了初始化器时,枚举器的值由这些初始化器定义。如果第一个枚举器没有初始值设定项,则关联值为零。对于定义中没有初始化器的任何其他枚举器,关联的值是前一个枚举器的值加一。

来自https://en.cppreference.com/w/cpp/language/enum

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 2020-03-03
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2016-11-17
    相关资源
    最近更新 更多