gpt4 book ai didi

c++ - 0.0/0.0 在 C++ 中产生负 nan 的任何原因?

转载 作者:行者123 更新时间:2023-12-05 02:01:46 25 4
gpt4 key购买 nike

我从 SoloLearn 中找到了以下内容:

I found that 0.0/0.0 makes negative nan(-nan).It makes sense to me that such a mathematical result is undefined, or "not a number". [...]

Furthermore, why is -nan+2^nan=nan?

例如:

#include <iostream>
using namespace std;

int main() {
cout<<0.0/0.0<<endl;
cout<<"important "+to_string(1.0/0.0)+"o:"<<endl;
cout<<"ba"+to_string(0.0/0.0*-1)+"a"<<endl;
cout<<(0.0/0.0)+2^(0.0/0.0*-1);//-nan+2^nan=nan
return 0;
}

但这不符合我的逻辑..

最佳答案

就C++语言而言,程序的行为是未定义的。因此,从 C++ 的角度来看,程序的行为没有任何“原因”。

根据 IEEE-754 浮点标准,假设您的硬件和语言实现符合它(他们可能符合),这种除法的结果是 NaN。 IEEE-754 没有为任何操作指定 NaN 的符号。因此,从 IEEE-754 的角度来看,答案是:由于语言/硬件实现选择的任何原因(或者只是没有特殊原因),它恰好在您的系统上如此。

结论:你永远不应该依赖于 NaN 的符号是什么特别的东西。而且您通常应该避免被零除。

关于c++ - 0.0/0.0 在 C++ 中产生负 nan 的任何原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66295777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com