C ++中限制头文件的目的是什么

What is the purpose of limits header files in C++

为什么我们在c++中使用名为limits的头文件。

#include<limits>

有什么用途以及我们可以使用这些。 实际上,我有一项任务是探索 limits 头文件的用途,并编写一个示例程序来使用它。我也是 C++ 编程语言的新手。我有中级知识,所以我不是编程新手,而是 c++ 新手。我没有 read/study 关于循环,类 和 c++ 中的函数。我只需要了解 limits header file?

这个header是做什么用的?

如果您看一下 the documentation,它会告诉您它的用途:

This header defines elements with the characteristics of arithmetic types. More specifically, it defines a numeric_limits class template and a specialization of it for each of the fundamental types:

然后它继续提到了两个涉及 float 舍入和非正规 floats 的枚举,以及关于 std::numeric_limits 的详尽页面。这定义了各种操作,例如

  • 检查它可以容纳的最小值和最大值
  • 检查是否是有符号类型,所以负数是否可以
  • 检查是否支持infinityNaN
  • 等值
  • 检查其舍入行为

i have an assignment to explore the purpose of limits header file and also write a sample programme to use this.

你可以找到一个很好的例子here。 运行 这个例子,想想它们有什么用处。例如,您可能正在编写一个对大数进行数学运算的程序,因此它可能会使用这些函数来检查限制是否太低并警告用户。或者它可以检查浮点数是否符合 IEEE-754 标准,如果您想将数字发送到不同的设备,这可能很重要。

为什么我们有这个 header?

在(大多数)其他语言中,精确 数字类型的详细信息由语言定义。在 C++ 中,有些事情留给实现来定义。 <limits> 提供了一种机制来检查实现选择了什么。

例如,标准只规定int是能够表示至少范围[-32767, 32767]的数值类型。我的机器有一个int可以表示[-2147483647, 2147483648],还有其他的更宽

程序员可能希望他们的代码在具有特定选择的实现上无法编译

int some_complex_algebra(int a, int b)
{
    static_assert(std::numeric_limits<int>::max() >= 2147483648, "This code assumes at least 32bit 2's complement int");
    // ...
}