什么是C ++中的复杂数据类型和Imaginary数据类型?

时间:2011-06-15 19:36:50

标签: c++ types complex-numbers

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

6 个答案:

答案 0 :(得分:8)

_Imaginary_Complex是用于定义虚构和复杂浮点变量类型的C99语言标准中的关键字;它们不是C ++语言的一部分。它们本身不是数据类型 - 它们会修改floatdoublelong 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定义为_Complex,将I定义为_Complex_I 1}}或_Imaginary_I(虚数单位)。这样,旧版C程序可以使用compleximaginary作为标识符;新计划应使用compleximaginary代替_Complex_Imaginary。请注意,实现保留以下划线后跟大写字母开头的标识符,因此遗留代码绝不应使用_Complex_Imaginary

另一方面,

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

答案 1 :(得分:4)

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

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

由于C ++比C更新,因此它包含复杂数据类型,因为它是第一次标准化的,并且不需要求助于强调版本。

答案 2 :(得分:0)

不是this

another source

_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.

答案 3 :(得分:0)

你到底在哪里看到它们?通常,以下划线后跟大写字母开头的名称将保留给标准库实现者,而不是您的业务。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

在C ++中,有一个名为<complex>的标头定义了一个模板类double<>,可以为floatdoublelong double实例化。这允许您定义复数并执行常用的算术运算和一些函数。

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

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