首页 > 解决方案 > MSVC 中的可能错误与编译时 NaN 比较

问题描述

我的同事正在用 NaN 做一些基本的实验,并且对 Visual Studio 上与他的预期不符的行为感到困惑。经过讨论,他似乎在 MSVC 2019 中发现了一个可能的编译器错误。

此代码段无法在 MSVC 上编译,但在 Clang 和 GCC 上很好:

#include <limits>

int main()
{
    static_assert(!(1 < std::numeric_limits<double>::quiet_NaN()), "compiler bug?");
}

演示:https ://godbolt.org/z/xGdqd5

Il 似乎问题涉及常量与 的编译时比较std::numeric_limits<double>::quiet_NaN(),这在现实生活中并不是真正有用的东西。

如果与 IEEE-754 预期的变量进行比较><则比较始终为假。quiet_NaN

标签: c++visual-c++floating-pointnancompiler-bug

解决方案


推荐阅读