【发布时间】:2019-05-17 14:06:57
【问题描述】:
想与std::nan 和std::nanf 一起使用一些自定义有效负载(非装箱)创建 nan 值。
但是,它确实没有按预期工作:
但是,在 Visual Studio 2015 中,该功能显然没有正确实现。 cppreference.com 提出的确切样本产生:
nan("1") = nan (7ff8000000000000)
nan("2") = nan (7ff8000000000000)
这不是我们所期望的。 VS 实现错了吗?如果不是,生成7ff8000000000001 和7ff8000000000002 的正确参数是什么?
【问题讨论】:
-
参考中的第一行:“转换实现定义的字符串”。这使得 “VS 实现错误吗?” 空洞地回答为否。
-
@StoryTeller:明白你的意思。但是如果它总是返回相同的值怎么办?
-
好吧,如果你想要一个 NaN 值,但你没有为 specific NaN 传递实现定义的序列,这似乎是非常理智的行为。它也是同一参考页第一段的最后一行。
-
“cppreference.com 提出的确切样本产生” - 该样本后跟短语“可能的输出”
-
"如果实现不支持安静的 NaN,则为零"。是的,它从来没有。只有当您没有 1-800 支持电话号码时,它才会变得安静 :)