Mik*_*ail 11 floating-point nan cmath c++11
我很惊讶表示安静的NaN值的C++工具的数量.我发现了三种标准方式:
std::numeric_limits<T>::quiet_NaN()
- 通用,我认为这是被选中的std::nan
,std::nanf
,std::nanl
-家庭的接收功能const char*
参数NAN
- 一个宏,"评估为一个安静的非数字"其中每一个都是在C++ 11中引入的.我有几个问题:
const char*
争论代表什么std::nan
和合作?如何使用?ein*_*ica 11
std::nan
,std::nanl
并std::nanf
继承自C Math库 ; NAN宏也是如此.他们都住在C的<math.h>
.然而,正如@NicolBolas所暗示的那样,它们只是在C++ 11中引入,因为它们不是ANSI C的一部分,而是C99,C语言标准的新版本.C++标准委员会正在努力"更新"C兼容性,可以这么说.
std::numeric_limits<T>
是为C++本身设计的(早在C++ 11之前),这就是我所使用的.
所以,底线答案是:C99兼容性.