我不确定为什么下面的代码不起作用,我试图在数组中找到NaN的值,然后将NaN移动到数组中的第一个元素(元素0)并将现有元素0与任何地方交换NaN是.请问我能检查一下我的代码吗?也许你们/女孩可以看到我不能的东西?
提前致谢!
#define NaN (float)(1e308*10*0)
void movenan(float array[], int size)
{
int w;
float hold;
float move;
for(w = 0; w < SIZE - 1; w++)
{
if(array[w] == NaN)
{
hold = array[w];
array[w] = array[0];
array[0] = hold;
}
}
Run Code Online (Sandbox Code Playgroud)
}
你的NaN检查是错误的:NaNs不会比较任何东西,包括他们自己.
使用isnan()检查值是否为NaN.
如果isnan()不可用,检查是否f为NaN 的规范方法如下:f != f.如果iff f是NaN,则计算结果为true .
这里有更多的信息:检查C++中的double(或float)是否为NaN(问题是关于C++,但是有很多关于C的信息.)
最后,for循环的终端条件看起来很可疑.你是说< SIZE还是<= SIZE-1?