我知道数学世界中的虚数和复数是什么,但是在 C++ 中呢,什么是复数和虚数的数据类型。此外,我还看到了 _Imaginary 和 _Complex 等数据类型。有什么区别,什么是复杂和虚构的数据类型?
5 回答
_Imaginary
并且_Complex
是 C99 语言标准中用于定义虚数和复数浮点变量类型的关键字;它们不是 C++ 语言的一部分。它们本身不是数据类型——它们修改float
,double
和long double
类型。例如:
float _Imaginary x; // imaginary 32-bit number
double _Complex y; // complex 64-bit number
long double _Complex z; // complex 80-bit number
_Imaginary
值大多等价于常规实数值,除非您将实数与虚数相加,您会得到一个_Complex
值。
头文件<complex.h>
将宏定义imaginary
为_Imaginary
和complex
as ,_Complex
以及or (虚数单位)。这样遗留的 C 程序就可以使用和作为标识符;新程序应该使用and而不是and 。请注意,以下划线后跟大写字母开头的标识符由实现保留,因此遗留代码不应该使用or 。I
_Complex_I
_Imaginary_I
complex
imaginary
complex
imaginary
_Complex
_Imaginary
_Complex
_Imaginary
另一方面,C++ 不使用它,而是使用模板类型std::complex<float>
、std::complex<double>
和std::complex<long double>
来处理复数。这些类的功能与 C99 类型非常相似,但不可互换。
这些实际上是 C 数据类型,而不是 C++ 数据类型。
在创建新的 C 标准时,委员会避免使用新的关键字。因此,它们使用以下划线开头的保留标识符。然后,该标准还可能提供定义更好宏的头文件(complex,而不是_Complex)。
由于 C++ 比 C 更新,它自首次标准化以来就包含了复杂的数据类型,并且不需要求助于下划线版本。
不是这个?
并从另一个来源:
_Imaginary
Revision as of 11:59, 3 December 2010 by PyBot (Talk | contribs)
Category
Reserved Words
Syntax
_Imaginary
Description
Reserved for future use.
Warning: C++Builder does not implement _Imaginary but does treat it as a keyword when the -An compiler flag is set. Do not use _Imaginary as an identifier.
有一个标头<complex>
为您定义了一个方便的复数数据类型,这是标准库的所有部分。这是文档。
在 C++ 中,有一个名为的头文件<complex>
定义了一个模板类double<>
,可以为float
、double
和long double
. 这允许您定义复数并执行通常的算术运算和一些功能。
标准 C++中没有imaginary
类或类型,只有实部为 0.0 的复数。任何imaginary
类都是某种供应商扩展。(就个人而言,我不认为一个imaginary
类会有多大用处。它甚至没有在乘法下关闭。)
任何以下划线开头并后跟大写字母的名称都专门保留供实现使用,因此没有任何标准 C++ 必须说明它们。任何此类类型都是特定于实现的,并且您尚未指定实现。此外,它可能不是您应该自己使用的东西。