【问题标题】:C++ portable NaN for win32/Unix用于 win32/Unix 的 C++ 可移植 NaN
【发布时间】:2012-03-21 07:39:39
【问题描述】:

在 gcc 库中,数学库中定义了一个 NaN,用于初始化未定义的双精度变量等情况。但是,这个 NaN 没有在 win32 数学库中定义,我想知道是否有任何方法可以使这个可移植?基本上,我只是想给“double”类型变量一个默认值。

【问题讨论】:

    标签: c++ winapi unix gcc


    【解决方案1】:

    C++ 保证0.0/0.0 是NaN,所以这是最简单的表达方式。

    记住NaN != NaN,所以(0.0/0.0) == (0.0/0.0)实际上是假的。要测试 NaN 性,如果您在某处没有库 is_nan,只需检查 x != x 的某个候选 double x。

    【讨论】:

      【解决方案2】:

      在编写可移植 C++ 代码时,请尝试使用标准库 <limits> 中定义的 NaN。例如,对于 double 类型,您可能希望使用 std::numeric_limits<double>::quiet_NaN()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-03
        • 2010-11-10
        • 1970-01-01
        • 2015-02-24
        • 2010-10-02
        • 2016-02-28
        • 2016-01-19
        • 2013-02-28
        相关资源
        最近更新 更多