需要解释一个表达式

时间:2017-05-05 02:14:44

标签: c++ c

我很难理解这个表达式:

表达式是:

if( !(a<00.0 || a>0.0))
 a=b;

其中ab都是float变量。

有没有人可以向我展示它?我会非常感谢你的帮助。

谢谢!

编辑--------------------第一次补充-------

我读到的原始代码中确实是00.0

现在我添加一些东西。 a是一个浮点数组,ba的初始值。

一开始,按a初始化b,然后使用其他函数计算a,最后检查a values,如果a values与某些函数不匹配条件,将值euqal设为b

float *a;
float b;
int N,i;
for(i=0;i<N;i++)
a[i]=b;//initialize

function(a,.....)
{
//calculate a[i];
}

for(i=0;i<N,i++)
if( a<0.0 ||
    (a>1000.0 && a!=b) ||
    !(a<00.0 || a>=0.0) )
a[i]=b;

1 个答案:

答案 0 :(得分:3)

乍一看,这似乎简化为

if (a == 0)
    a = b;

但是,如果a是NaN,则此简化会产生不同的结果。与NaN的任何比较都是错误的,因此如果b为零或NaN,表达式更复杂的会将a分配给a