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

som*_*guy 2 c++ types complex-numbers

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

Ada*_*eld 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
Run Code Online (Sandbox Code Playgroud)

_Imaginary值大多等于常规实数值,除非您添加具有虚数值的实数,否则您将获得一个_Complex值.

头文件<complex.h>定义了宏imaginary_Imaginarycomplex作为_Complex,以及I如任一_Complex_I_Imaginary_I(虚数单位).这样传统的C程序就可以使用compleximaginary作为标识符; 新程序应该使用compleximaginary不是_Complex_Imaginary.请注意,实现保留以下划线后跟大写字母开头的标识符,因此遗留代码永远不应使用_Complex_Imaginary.

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