OpenCL - double既不<= 300或> = 200?C++

Jam*_*Sin 0 c++ opencl

double test = 0.0;
.... some code
char qwe = ...
.. some code
test += qwe;
if (test >= 200 || test <= 300) {
   test = 7.0;
}
// For some reason, test seems to equal 0?
Run Code Online (Sandbox Code Playgroud)

为什么(test >= 200 || test <= 300)== false?

这是非常奇怪的行为.

当我打印输出时,它是0?

Bat*_*eba 6

尽管您的程序中存在任何未定义的行为,(test >= 200 || test <= 300) == false但是且仅当,testNaN.您可以NaN通过某些数字错误获得(不是数字),例如0.0 / 0.0通过sqrt使用负输入调用.

使用std::isnan(test)检查确认.