我知道数学世界中的虚数和复数是什么,但在C++中怎么样,复数和虚数的数据类型是什么。另外,我看到_Imaginary和_Complex等数据类型。有什么区别,什么是复杂和想象的数据类型?什么是C++中的复杂数据类型和虚数据类型?
回答
_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
或_Imaginary_I
(虚数单位)。这样传统的C程序可以使用complex
和imaginary
作为标识符;新程序应使用complex
和imaginary
而不是_Complex
和_Imaginary
。请注意,以下划线开头并带有大写字母的标识符由实现保留,因此遗留代码不应使用_Complex
或_Imaginary
。
另一方面,C++不使用此模板,而是使用模板化类型std::complex<float>
,std::complex<double>
和std::complex<long double>
来处理复数。这些类的功能与C99类型非常相似,但不可互换。
不是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.
确切位置在哪里你看到了吗?通常,名称以下划线开头,后跟大写字母的名称将保留给标准库实现者,而不是您的业务。
有一个标题<complex>
它为您定义了一个方便的复数数据类型,标准库的所有部分。这里是documentation。
这些实际上是C数据类型,而不是C++数据类型。
当创建新的C标准时,委员会避免使用新的关键字。所以,他们使用保留标识符,以下划线开头。然后,该标准还可以提供定义更好的宏的头文件(复数,而不是_Complex)。
由于C++比C更新,它已经包含复杂数据类型,因为它是第一次标准化的,并且不需要求助于下划线的版本。
在C++中,有一个称为<complex>
头,其限定一个模板类double<>
,其可被实例化float
,double
,并long double
。这使您可以定义复数,并执行通常的算术运算和一些功能。
标准C++中没有imaginary
类或类型,只是实数部分为0.0的复数。任何imaginary
类都是某种供应商扩展。 (就我个人而言,我看不到一个imaginary
类会有很大用处,甚至在乘法运算下甚至没有关闭。)
任何以下划线开头且后跟大写字母的名称都专门用于实现,所以没有什么标准的C++必须对它们进行评论。任何这样的类型都是特定于实现的,并且您没有指定实现。而且,这可能不是你应该使用的东西。
- 1. 复杂的C++数据类型和COM
- 2. c中的复杂数据类型#
- 3. 什么是复杂类型?
- 4. WINOLEAPI的C#数据类型是什么?
- 5. .NET SOAP和复杂数据类型
- 6. REST,json,.Net4和复杂数据类型
- 7. WCF中的复杂数据类型?
- 8. 什么是相应的C++数据类型为SQL数字(18,0)数据类型?
- 9. 什么是列数据类型Sharepoint列数据类型中的业务数据?
- 10. 测试复杂的数据类型?
- 11. 什么类和数据类型
- 12. C++中的布尔型数据类型是什么
- 13. Java和c#之间的Webservices - 复杂的数据类型
- 14. Asp.Net动态数据+复杂类型
- 15. 内存分配复杂数据类型
- 16. Haskell中的类型和数据类型有什么区别?
- 17. 什么类型的数据库是data.frame?
- 18. 这是什么类型的数据库?
- 19. clock()的数据类型是什么?
- 20. 这是什么类型的GPS数据?
- 21. 什么是cin的数据类型
- 22. vptr的数据类型是什么?
- 23. unix_timestamp(MySQL)的数据类型是什么?
- 24. 什么SQlite数据类型映射到clr数据类型double?
- 25. PostgreSQL和C数据类型
- 26. 在CakePHP中处理复杂数据类型的最佳方法是什么?
- 27. 将复杂数据类型映射到模型类(SOAP)
- 28. XML架构复杂类型(自定义数据类型)错误
- 29. 如何在Tensorflow的C++ API中使用复杂数据类型?
- 30. pySpark数据帧“断言isinstance(数据类型数据类型),‘数据类型应该是数据类型’
但是,请注意,C++ 11指定'std :: complex'应该具有与C99'_Complex'相同的内存布局,明确的目的是保持C的'T _Complex'和C++的std之间的二进制兼容性::复杂的'类型。每个类型都有两个成员,在'虚数'之前有'real',这样如果投入一个类型为'T [2]'的数组,'[0]'是真实的,'[1]'会是虚构的。请参见“非静态数据成员”一节,[这里](http://en.cppreference.com/w/cpp/numeric/complex)。 –
2016-10-04 00:53:29