gpt4 book ai didi

c++11 - std::numeric_limits::quiet_NaN() 与 std::nan() 与 NAN

转载 作者:行者123 更新时间:2023-12-02 20:05:51 25 4
gpt4 key购买 nike

我对表示安静 NaN 值的 C++ 工具的数量感到惊讶。我发现了三种标准方法:

  1. std::numeric_limits<T>::quiet_NaN() - 通用,我认为这是选定的
  2. std::nan , std::nanf , std::nanl - 函数系列接受const char*论据
  3. NAN - 一个宏,“其计算结果是一个安静的非数字”

其中每一个都是在 C++11 中引入的。我对此有几个问题:

  1. const char* 是什么意思?参数代表 std::nan和公司?如何使用?
  2. 为什么我们需要在 C++11 中添加一个,而我们已经为此目的添加了一个通用特征类? (是为了兼容C吗?)
  3. 我应该默认使用什么? (我想这是第一个)

最佳答案

std::nan , std::nanlstd::nanf are inherited from the C Math library ; NAN macro也是如此。他们都住在C's <math.h> 。然而,正如 @NicolBolas 所建议的,它们仅在 C++11 中引入,因为它们不是 ANSI C 的一部分,而是 C99(C 语言标准的较新版本)的一部分。可以这么说,C++ 标准委员会正在努力“更新”C 兼容性。

std::numeric_limits<T> 是为 C++ 本身设计的(远早于 C++11),这就是我要使用的。

所以,底线答案是:C99 兼容性。

关于c++11 - std::numeric_limits::quiet_NaN() 与 std::nan() 与 NAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com