【发布时间】:2020-01-08 12:07:44
【问题描述】:
在 C 中,标量类型是:
- floating_point(双浮点,...)
- 整数(int、char、long、...)
- 指针
- 枚举
在 C++ 中,添加的标量类型只是:
- 积分(布尔)
- nullprt_t
- 成员指针(成员对象指针和成员函数指针)
只有三种类型的标量添加到 C++ 中?
【问题讨论】:
-
列表中缺少什么?
标签: c++ c types definition scalar
在 C 中,标量类型是:
在 C++ 中,添加的标量类型只是:
只有三种类型的标量添加到 C++ 中?
【问题讨论】:
标签: c++ c types definition scalar
根据标准的 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-member、std::nullptr_t 和 char8_t(char8_t 还没有在 C++ 中;它将在即将推出的C++20)。
bool (<stdbool.h>)、wchar_t (<stddef.h>)、char16_t 和 char32_t (<uchar.h>) 类型仅在 C 中的某些标准头文件中定义。
【讨论】:
在 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 中不存在。
【讨论】: