【问题标题】:What types in C++ are enumerated types?C++ 中的哪些类型是枚举类型?
【发布时间】:2015-08-09 18:19:45
【问题描述】:

我发现(click here) 开关可以使用整数类型或“枚举类型”来控制C++中的表达式。

this article 中对“枚举”的一种解释是枚举类型“是使用一组自定义标识符(称为枚举数)作为可能值定义的类型”

但是,对于 char、int、long、double 等类型,由于它们最多只使用 8 个字节,因此它最多包含 232 个可能的元素。那么所有这些可能的元素选择肯定是可排序的(使用常见的算术比较)。因此它们都是枚举类型。此外,这个论点也适用于任何其他类型。那么,什么类型不是枚举类型?

感谢那些能够解释清楚枚举类型的定义,并给出枚举类型非枚举类型的具体例子.

提前致谢 =)

【问题讨论】:

  • 你链接的文章没有说 switch 只能使用枚举类型。它表示整数或枚举类型,或者可以转换为任何一种的类类型。
  • "an integer or enumerated type" 不知道为什么你没有看到integral虽然里面写了很多次...
  • 整数类型为charshortintlonglong longbool。而枚举类型是由关键字enumenum class 定义的类型。
  • 我的错。对此感到抱歉
  • ...及其unsigned 变体...

标签: c++ types


【解决方案1】:

来自cppreference

枚举是一种独特的类型,其值被限制为以下之一 几个明确命名的常量(“枚举数”)。的价值观 常量是称为基础类型的整数类型的值 枚举。

因此,枚举类型的示例是您可以使用 enum 关键字声明的任何类型。

非枚举类型的一个例子是int,因为它的值不限于一组显式命名的常量,而是所有整数(或int 在给定大小的情况下可以表示的所有整数)。

另一个非枚举类型的例子是指向任何东西的指针,因为指针的可能值集合不是整数。

【讨论】:

    【解决方案2】:

    枚举类型是用户定义的类型,与整数一样,可以采用一系列数值。它们是使用enum 关键字声明的,通常定义一组命名值来指定它们应该保存哪些值(尽管它们不一定限于这些值)。例如:

    enum colour {red, green, puce};
    

    colour 声明为枚举类型,并将redgreenpuce 定义为该类型对象可以采用的值。

    这些可以在switch 语句中使用,charintlong 等整数类型也可以使用。您可能误读了您链接到的第一篇文章,它说“整数或枚举类型”,而不仅仅是“枚举类型”。

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多