2

我知道数学世界中的虚数和复数是什么,但是在 C++ 中呢,什么是复数和虚数的数据类型。此外,我还看到了 _Imaginary 和 _Complex 等数据类型。有什么区别,什么是复杂和虚构的数据类型?

4

5 回答 5

8

_Imaginary并且_Complex是 C99 语言标准中用于定义虚数和复数浮点变量类型的关键字;它们不是 C++ 语言的一部分。它们本身不是数据类型——它们修改float,doublelong 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_Imaginarycomplexas ,_Complex以及or (虚数单位)。这样遗留的 C 程序就可以使用和作为标识符;新程序应该使用and而不是and 。请注意,以下划线后跟大写字母开头的标识符由实现保留,因此遗留代码不应该使用or 。I_Complex_I_Imaginary_Icompleximaginarycompleximaginary_Complex_Imaginary_Complex_Imaginary

另一方面,C++ 不使用它,而是使用模板类型std::complex<float>std::complex<double>std::complex<long double>来处理复数。这些类的功能与 C99 类型非常相似,但不可互换。

于 2011-06-15T19:52:11.430 回答
4

这些实际上是 C 数据类型,而不是 C++ 数据类型。

在创建新的 C 标准时,委员会避免使用新的关键字。因此,它们使用以下划线开头的保留标识符。然后,该标准还可能提供定义更好宏的头文件(complex,而不是_Complex)。

由于 C++ 比 C 更新,它自首次标准化以来就包含了复杂的数据类型,并且不需要求助于下划线版本。

于 2011-06-15T19:49:12.130 回答
0

不是这个

并从另一个来源

_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.
于 2011-06-15T19:40:27.227 回答
0

有一个标头<complex>为您定义了一个方便的复数数据类型,这是标准库的所有部分。这是文档

于 2011-06-15T19:41:06.253 回答
0

在 C++ 中,有一个名为的头文件<complex>定义了一个模板类double<>,可以为floatdoublelong double. 这允许您定义复数并执行通常的算术运算和一些功能。

标准 C++中没有imaginary类或类型,只有实部为 0.0 的复数。任何imaginary类都是某种供应商扩展。(就个人而言,我不认为一个imaginary类会有多大用处。它甚至没有在乘法下关闭。)

任何以下划线开头并后跟大写字母的名称都专门保留供实现使用,因此没有任何标准 C++ 必须说明它们。任何此类类型都是特定于实现的,并且您尚未指定实现。此外,它可能不是您应该自己使用的东西。

于 2011-06-15T19:49:33.633 回答