有人可以解释一下吗?
#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_MIN
,INT_MIN
,LONG_MIN
等使用,你必须自己在它们之间切换 - 很多额外的代码来做一些如此微不足道的事情 -
<climits>
有很多宏,宏不像"普通"C++标识符那样尊重命名空间或作用域 - 它们的替换非常不分青红皂白 - 所以它们使你的程序更容易出错 -
<limits>
提供了有关数字类型的更多见解,例如它们是否是有符号的,它们可以处理的10进制数字的数量,它们是否可以表示无穷大或非数字哨兵值等(有关更完整的列表和信息,请参阅标题文档)
> limits.h
是一个 C 标准库标头。 limits
是一个C++标准库标头。它们包含不同的东西。
C++中有climits
,它或多或少提供了limits.h
所做的事情。