我知道数学世界中的虚数和复数是什么,但在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中的复杂数据类型#
- 2. WINOLEAPI的C#数据类型是什么?
- 3. .NET SOAP和复杂数据类型
- 4. WCF中的复杂数据类型?
- 5. 什么是列数据类型Sharepoint列数据类型中的业务数据?
- 6. 测试复杂的数据类型?
- 7. Java和c#之间的Webservices - 复杂的数据类型
- 8. Asp.Net动态数据+复杂类型
- 9. 这是什么类型的数据库?
- 10. unix_timestamp(MySQL)的数据类型是什么?
- 11. 什么是cin的数据类型
- 12. clock()的数据类型是什么?
- 13. 将复杂数据类型映射到模型类(SOAP)
- 14. 在CakePHP中处理复杂数据类型的最佳方法是什么?
- 15. C中的数据类型
- 16. IKVM的Map.xml中的字符串和复杂数据类型!
- 17. 这应该是什么数据类型?
- 18. 什么是REBOL结构!数据类型?
- 19. 输出是什么数据类型?
- 20. 什么数据类型是$('#checkbox')。attr('checked')
- 21. 这是什么Ruby数据类型?
- 22. 什么是无符号数据类型?
- 23. 什么是MLSLABEL Oracle数据类型?
- 24. 什么是'长?'数据类型?
- 25. Bool * X,这是什么数据类型?
- 26. 什么是类型和什么是类型构造函数scala
- 27. Qt webkit编程,JavaScript数据类型对应的Qt数据类型是什么?
- 28. YCSB加载到数据库中的数据类型是什么?
- 29. 什么是C中的复合类型?
- 30. 在C#中读写复杂数据类型
但是,请注意,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