在 C/C++ 中使用 INT_MAX 和 INT_MIN

在本文中,我们将看看在 C/C++ 中使用 INT_MAX 和 INT_MIN。

这些实际上是代表最大和最低整数值的有用的宏。

让我们看看它,使用一些例子。


使用 INT_MAX 和 INT_MIN

INT_MAX 是一个代表最大整数值的宏,同样,INT_MIN 也代表最小整数值。

这些宏在标题文件中定义为<limits.h>,因此您必须包括它。

1#include <limits.h>
2
3INT_MAX
4
5INT_MIN

请注意,任何整数变量必须位于 INT_MIN 和 INT_MAX 之间。

通常,整数存储为4个字节(32位)。

这意味着在几乎所有机器中,最大整数值将是2^(31) - 1 = +2147483647.

最小整数值将是 -(2^31) = -2147483648

让我们来检查一下,对于我们的机器。

1#include <stdio.h>
2#include <limits.h>
3
4int main() {
5    printf("Maximum Integer Value: %d\n", INT_MAX);
6    printf("Minimum Integer Value: %d\n", INT_MIN);
7    return 0;
8}

出发点( )

1Maximum Integer Value: 2147483647
2Minimum Integer Value: -2147483648

實際上,我們得到了我們預測的。

现在让我们举另一个例子,正确预测任何整数过流或过流。

 1#include <stdio.h>
 2#include <limits.h>
 3
 4int main() {
 5    int value = 0;
 6    while (value >= 0) {
 7        // Check for overflow
 8        if (value == INT_MAX) {
 9            printf("value = %d. Possible overflow!\n", value);
10        }
11        value ++;
12    }
13    printf("Now, value = %d\n", value);
14    value = 0;
15    while (value <= 0) {
16        // Check for underflow
17        if (value == INT_MIN) {
18            printf("value = %d. Possible underflow!\n", value);
19        }
20        value --;
21    }
22    printf("Now, value = %d\n", value);
23    return 0;
24}

出发点( )

1value = 2147483647. Possible overflow!
2Now, value = -2147483648
3value = -2147483648. Possible underflow!
4Now, value = 2147483647

虽然这需要好几秒钟才能运行,但它确实能做到我们所期望的。

整数将过流到INT_MIN,并将过流到INT_MAX

这有助于检测这些值中的跳跃。


我们为什么需要这些宏观?

通常,对于某些算法,有时需要将变量作为最低值或最高值进行初始化。

数据类型的位数可能因机器而异。

要使最大/最小值的使用一致,如果每个人都可以使用相同的宏,这将是方便的!

这就是为什么这种类型的宏观存在 -

  • 以免您记住实际值
  • 在所有机器中具有一致的编程模式
  • 非常方便使用

希望这些原因可以说服您在构建自己的 C/C++ 库时使用此类宏。


结论

在本文中,我们了解了如何在 C/C++ 中使用 INT_MAX 和 INT_MIN 宏。

对于类似的内容,请参阅我们关于 C 编程的教程部分( / 社区 / 教程 / c 编程)。

参考


Published At
Categories with 技术
Tagged with
comments powered by Disqus