用于win32 / Unix的C ++ portable NaN

时间:2012-03-21 07:39:40

标签: c++ winapi unix gcc

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

2 个答案:

答案 0 :(得分:7)

C ++保证0.0/0.0NaN,因此这是表达它的最简单方法。

请记住NaN != NaN,因此(0.0/0.0) == (0.0/0.0)实际上是假的。要测试NaN-ness,如果某个地方没有库is_nan,只需检查某个候选x != x的{​​{1}}。

答案 1 :(得分:5)

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