当我<limits>在 c++ 代码中包含或<limit.h>时有什么区别



有人可以解释一下吗?

    #include <iostream>
    #include <limits.h>

    #include <iostream>
    #include <limits>

> <limits> 是一个C++标准库标头,提供与 C 标头<limits.h>类似的见解(在 C++ 中也作为 <climits> 提供),但它的编写方式在C++程序中更有用、更安全:

  • 假设你有一个template <typename Numeric> ...,里面的代码想知道用户实例化你的模板时使用的 Numeric type 参数的最小值和最大值:你可以使用 std::numeric_limits<Numeric>::min()...::max() ; 如果你想从<climits>访问相同的值,很难知道SCHAR_MIN哪一个, SHRT_MININT_MINLONG_MIN等使用,你必须自己在它们之间切换 - 很多额外的代码来做一些如此微不足道的事情

  • <climits>有很多宏,宏不像"普通"C++标识符那样尊重命名空间或作用域 - 它们的替换非常不分青红皂白 - 所以它们使你的程序更容易出错

  • <limits>提供了有关数字类型的更多见解,例如它们是否是有符号的,它们可以处理的10进制数字的数量,它们是否可以表示无穷大或非数字哨兵值等(有关更完整的列表和信息,请参阅标题文档)

> limits.h 是一个 C 标准库标头。 limits 是一个C++标准库标头。它们包含不同的东西。

C++中有climits,它或多或少提供了limits.h所做的事情。

最新更新