c++ - 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
解决方案
推荐阅读
- node.js - Graphql 总是返回 null
- django - django 中的模板过滤器标签 - 过滤 {{activate_url}}
- java - 我可以让构造函数返回由于验证原因尚未初始化的值吗?
- pandas - 使用 PANDAS 代替 Spark
- python - 如何在python中对具有概率密度的积分函数进行曲线拟合?
- html - 调整页面大小时覆盖文本的共享按钮
- entity-framework-core - 无法翻译 LINQ 表达式“First()”并将在本地计算。使用 groupby 时
- java - 为什么我不能覆盖 ID
标签? - linux - 如何使用 Bash 获取仅包含一组字母的行?
- python - 我可以使用 python 的 np.savez 来保存列表列表吗?