C++ 为什么0.0/0.0在C+中表示负nan+;?
我从中发现了以下内容: 我发现0.0/0.0表示负nan(-nan)。 对我来说,这样一个数学结果是未定义的,或者说“不是一个数字”,这是有道理的。[……] 此外,为什么-nan+2^nan=nan 例如:C++ 为什么0.0/0.0在C+中表示负nan+;?,c++,nan,undefined-behavior,C++,Nan,Undefined Behavior,我从中发现了以下内容: 我发现0.0/0.0表示负nan(-nan)。 对我来说,这样一个数学结果是未定义的,或者说“不是一个数字”,这是有道理的。[……] 此外,为什么-nan+2^nan=nan 例如: #include <iostream> using namespace std; int main() { cout<<0.0/0.0<<endl; cout<<"important "+to_string
#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;
}
#包括
使用名称空间std;
int main(){
对于C++语言而言,程序的行为是不明确的,因此,从C++的角度看,程序的行为没有任何“原因”。
根据IEEE-754浮点标准,假设您的硬件和语言实现符合该标准(可能符合),这种划分的结果是NaN。IEEE-754没有为任何操作指定NaN的符号。因此,从IEEE-754的角度来看,答案是:无论语言/硬件实现选择了什么原因(或者根本没有特殊原因),在您的系统上都是如此
总而言之:你永远不应该依赖于NaN的符号。你通常应该避免被零除。clang和gcc Different live:我在另一个论坛上找到了2020年这个问题的精确副本:。如果你复制了部分文本,我想你已经读过了。那么,这个问题没有回答t的是什么你想知道什么?如果你只是想添加它,那么你可以选择回答你自己的问题。问一个没有在这里被问到的问题是可以的。但剽窃不是。如果你复制并通过一个问题,你应该链接它的来源。不仅是因为剽窃,而且因为该网站上已经有答案了。+ve vs-ve NaNs……所以你的平台的转换函数可以打印“南值”的“符号”,但它没有任何意义,你不应该为了测试的目的而考虑它……“完成”的目的是什么?(“不”字)?“完成”?“完成”“?我尝试替换的内容似乎都不合适。您的意思是您的结果与链接和引用的问题不匹配吗?(如果是,您应该将结果添加到您的问题中。)