您好,我有一个函数仅在 64 位版本构建上给我带来奇怪的行为。 32 位适用于所有情况,64 位适用于调试。无论如何,这是原始代码,value 的值是一个实数,如 5 或 100 等:
static void
Foo(char **pInOut, unsigned int key, double value)
{
if (value == -HUGE_VAL)
return;
if (value != value)
return;
// Does stuff that isn't happening
}
我正在玩弄,我用以下内容替换了值!=值:
static void
Foo(char **pInOut, unsigned int key, double value)
{
if (value == -HUGE_VAL)
return;
if (_isnan(value))
return;
// Does stuff that happens now
}
现在它可以工作了。 value != value 仍然有效,对吗?我错过了什么吗...我只是不明白为什么旧方法不起作用?
最佳答案
如果它是 NaN,则 value!=value
将为 true。但如果它不是 NaN,则不能保证 value!=value
将为 false。
关于c++ - IsNan vs value != 64 位 VS2010 上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203984/