【问题标题】:The scalar type additionnal in C++ [closed]C ++中的标量类型附加[关闭]
【发布时间】:2020-01-08 12:07:44
【问题描述】:

在 C 中,标量类型是:

  • floating_point(双浮点,...)
  • 整数(int、char、long、...)
  • 指针
  • 枚举

在 C++ 中,添加的标量类型只是:

  • 积分(布尔)
  • nullprt_t
  • 成员指针(成员对象指针和成员函数指针)

只有三种类型的标量添加到 C++ 中?

【问题讨论】:

标签: c++ c types definition scalar


【解决方案1】:

根据标准的 C++ 标量类型的完整列表(引用最新草案):

[basic.fundamental]

有五种标准的有符号整数类型:“signed char”、“short int”、“int”、“long int”和“long long int”

对于每个标准的有符号整数类型,都存在一个对应的(但不同的)标准无符号整数类型

类型bool、char、wchar_t、char8_t、char16_t、char32_t,有符号和无符号整数类型统称为整数类型

共有三种浮点类型:float、double 和 long double。

整数和浮点类型统称为算术类型。

[basic.compound]

指向非静态类成员的指针,它标识给定类的对象中给定类型的成员,[dcl.mptr]。指向数据成员的指针和指向成员函数的指针统称为成员指针类型。

指向 cv void 的指针或指向对象类型的指针的类型称为对象指针类型。可以指定函数的指针类型称为函数指针类型。

[dcl.enum]

仅使用 enum 的 enum-key 声明的枚举类型是无作用域枚举,其枚举数是无作用域枚举数。 enum-keys 枚举类和枚举结构在语义上是等价的;用其中之一声明的枚举类型是作用域枚举,它的枚举器是作用域枚举器。

[基本类型]

算术类型 ([basic.fundamental])、枚举类型、指针类型、指向成员类型 ([basic.compound])、std​::​nullptr_t 和这些类型的 cv 限定版本统称为称为标量类型。

在这些类型中,C 缺少作用域枚举、pointers-to-memberstd::nullptr_tchar8_­tchar8_­t 还没有在 C++ 中;它将在即将推出的C++20)。

bool (<stdbool.h>)、wchar_t (<stddef.h>)、char16_­tchar32_­t (<uchar.h>) 类型仅在 C 中的某些标准头文件中定义。

【讨论】:

    【解决方案2】:

    在 C++ 中,标量类型是(6.7 类型)

    9 算术类型 (6.7.1)、枚举类型、指针类型、 指向成员类型 (6.7.2)、std::nullptr_t 和 cv 限定的指针 这些类型的 (6.7.3) 版本统称为标量类型。

    在 C 中,标量类型是(6.2.5 类型)

    21 算术类型和指针类型统称为标量 类型。

    注意C中的那个

    11 复数类型共有三种,指定为float_Complex、double _Complex 和长双 _Complex。 43)(复杂类型是一个条件特征 实现不需要支持;看 6.10.8.3.) 真正的浮动和复杂类型统称为 浮动类型

    在 C++ 中,复杂类型是用户定义的类型,它们被定义为类。

    在 C 中,枚举也包含在算术类型的类别中,而在 C++ 中,枚举不包含在算术类型的类别中。

    在 C 中有标准的无符号整数类型_Bool,而在 C++ 中则不存在。另一方面,在 C++ 中有整数类型 bool 在 C 中不存在。

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      相关资源
      最近更新 更多