Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么0.0/0.0在C+中表示负nan+;?_C++_Nan_Undefined Behavior - Fatal编程技术网

C++ 为什么0.0/0.0在C+中表示负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

我从中发现了以下内容:

我发现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(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……所以你的平台的转换函数可以打印“南值”的“符号”,但它没有任何意义,你不应该为了测试的目的而考虑它……“完成”的目的是什么?(“不”字)?“完成”?“完成”“?我尝试替换的内容似乎都不合适。您的意思是您的结果与链接和引用的问题不匹配吗?(如果是,您应该将结果添加到您的问题中。)