C++ 什么是-“南”;是什么意思?是什么原因?

C++ 什么是-“南”;是什么意思?是什么原因?,c++,algorithm,math,floating-point,double,C++,Algorithm,Math,Floating Point,Double,我知道nan的意思是“不是一个数字”,但这段代码使用高斯消去算法输出“-nan”: #包括 #包括 使用名称空间std; typedef long-long-ll; 常数int N=55; 常数双eps=1e-7; int n; 结构垫{ int l,c; 双p[N][N]; 双*运算符[](int i){返回p[i];} }a; bool flo0(double&x){return(fabs(x)这是一个非数字值,符号位表示为负数,运行时决定将其显示为“负nan”。当程序运行时,p[i][j]

我知道nan的意思是“不是一个数字”,但这段代码使用高斯消去算法输出“-nan”:

#包括
#包括
使用名称空间std;
typedef long-long-ll;
常数int N=55;
常数双eps=1e-7;
int n;
结构垫{
int l,c;
双p[N][N];
双*运算符[](int i){返回p[i];}
}a;

bool flo0(double&x){return(fabs(x)这是一个非数字值,符号位表示为负数,运行时决定将其显示为“负nan”。

当程序运行时,
p[i][j]中的值
溢出,它会得到
inf
inf/inf
会导致
nan

当你在谷歌上搜索
-nan
时,你实际上是在告诉谷歌排除包含
nan
的结果。这很棘手。如果你知道
nan
代表
而不是一个数字,那么谷歌搜索起来就更容易了,所以你有一个负数“不是一个数字"这里。
nan
可以发生,例如,一般来说,除以零。你能提供一个发生这种情况的输入吗?当我用输入运行这个程序时
3 1 2 3 4 5 6 7 8 9 1 2 3
它输出
x1=0.00 x2=-1.00 x3=2.00
。如果相同的输入在你的机器上导致
nan
,你可能有未定义的行为有些数组索引从0到N-1。您的循环看起来不像(int i=1;iAside:通过自动格式化程序运行程序。很难读取哪些语句由哪个
控制。如果
s和
for
sAlso,单字母变量名会使代码更难理解。然后这件事:
typedef long long ll;
--没有这样的宏。C中有数据类型++,代码< > In64,t>代码,它显示数据类型,以及位宽度。然后,在C++中试图伪造1-数组的明显问题——如果这就是整个<代码> - NaN/COD>问题的根源,不要惊讶,即超出界限。C++中的数组从0开始,而不是1。谢谢你的回答。但是我有判断。d在所有除法之前,股息是否为0,你说的应该没有错,所以我仍然感到困惑。@JochiHua获得nan的方法比
0./0.
x1=-nan
x2=-nan
x3=-nan
x4=-nan
x5=-nan
x6=-nan
x7=-nan
x8=-nan
x9=-nan
x10=-nan
x11=-nan
x12=-nan
x13=-nan
x14=-nan
x15=-nan
x1...