本文介绍了为什么(0 + 0i)^ {0} ==(nan,nan)在c ++的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
查看代码blew:
#include <complex>
#include <iostream>
int main()
{
std::cout << std::pow( std::complex<double>(0,0), std::complex<double>(0,0) ) << "\n";
std::cout << std::pow( std::complex<double>(0,0), double(0) ) << "\n";
return 0;
}
g ++(4.8.1)输出
g++(4.8.1) gives an output of
(nan,nan)
(-nan,-nan)
而clang ++(3.3)给出输出
while clang++(3.3) gives an out put of
(-nan,-nan)
(-nan,-nan)
推荐答案
根据
返回值
由幂(exp或iexp)引起的基数。
发生域错误 if base是0,exp小于或等于0. 在这种情况下返回NAN。
[...]
在你的代码中,两个基数都为0,exp等于0, 0 + 0 * i
仍为0.所以 NaN
似乎是预期的。
In your code, you have both base with 0 and exp equal to 0 since the complex number 0 + 0 *i
is still 0. So NaN
seems expected.
由@Fred Larson提供,并根据
By courtesy of @Fred Larson, and according to overloaded std::pow for std::complex
这篇关于为什么(0 + 0i)^ {0} ==(nan,nan)在c ++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!