c++ - IsNan vs value != 64 位 VS2010 上的值

标签 c++ visual-studio-2010 64-bit double

您好,我有一个函数仅在 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/

相关文章:

c++ - 混合 C/C++ 程序中缺少 C++ 文件的 gcda 文件,为所有源生成 gcno

c++ - 为什么我不能编译这个开源项目

delphi - 在Delphi XE6 x64下编译时GetProcAddress无法运行

java - 启动错误: could not create the Java virtual machine.发生致命异常

c++ - 类型检测器 `hasNestedType` 没有编译?

C++:glibc 检测到损坏的双链表:0x08f8f148

c# - CopyToDataTable 不是 system.array 的成员

c# - 如何修复 Visual Studio 警告

java - Google Play 64 位要求

c++使用另一个类的函数