我知道数学世界中的虚数和复数是多少,但在C ++中,什么是复数和虚数的数据类型。另外,我看到了_Imaginary和_Complex等数据类型。有什么区别,什么是复杂和虚构的数据类型?
答案 0 :(得分:8)
_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
定义为_Complex
,将I
定义为_Complex_I
1}}或_Imaginary_I
(虚数单位)。这样,旧版C程序可以使用complex
和imaginary
作为标识符;新计划应使用complex
和imaginary
代替_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?
_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<>
,可以为float
,double
和long double
实例化。这允许您定义复数并执行常用的算术运算和一些函数。
标准C ++中没有imaginary
类或类型,只有复数,实部为0.0。任何imaginary
类都是某种供应商扩展。 (就个人而言,我没有看到imaginary
类会有多大用处。它甚至不会在乘法时关闭。)
任何以下划线开头并后跟大写字母的名称都专门保留供实现使用,因此C ++没有任何标准可以说明它们。任何此类类型都是特定于实现的,并且您尚未指定实现。而且,这可能不是你应该自己使用的东西。