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

时间:2020-02-23 14:29:59  来源:igfitidea点击:

在本文中,我们将介绍如何在C/C++中使用INT_MAX和INT_MIN。

这些实际上是有用的宏,它们代表最大和最小整数值。

让我们用一些例子来看看它。

使用INT_MAX和INT_MIN

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

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

#include <limits.h>

INT_MAX

INT_MIN

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

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

这意味着在几乎所有机器中,最大整数值为2 ^(31)– 1 = +2147483647。

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

让我们为我们的机器验证一下。

#include <stdio.h>
#include <limits.h>

int main() {
  printf("Maximum Integer Value: %d\n", INT_MAX);
  printf("Minimum Integer Value: %d\n", INT_MIN);
  return 0;
}

输出

Maximum Integer Value: 2147483647
Minimum Integer Value: -2147483648

确实,我们得到了我们的预期。

现在再举一个例子,正确预测任何整数上溢或者下溢。

#include <stdio.h>
#include <limits.h>

int main() {
  int value = 0;
  while (value >= 0) {
      //Check for overflow
      if (value == INT_MAX) {
          printf("value = %d. Possible overflow!\n", value);
      }
      value ++;
  }
  printf("Now, value = %d\n", value);
  value = 0;
  while (value <= 0) {
      //Check for underflow
      if (value == INT_MIN) {
          printf("value = %d. Possible underflow!\n", value);
      }
      value --;
  }
  printf("Now, value = %d\n", value);
  return 0;
}

输出

value = 2147483647. Possible overflow!
Now, value = -2147483648
value = -2147483648. Possible underflow!
Now, value = 2147483647

尽管这需要花好几秒钟的时间,但确实可以达到我们的预期。

整数将溢出至" INT_MIN",并将下溢至" INT_MAX"。

这对于检测这些值的跳跃很有用。

为什么我们需要这些宏?

通常,对于某些算法,有时有必要将变量初始化为最低/最高值。

数据类型的位数可能会因计算机而异。

为了使最大值/最小值的用法保持一致,如果每个人都可以使用相同的宏,那将很方便!

这正是存在此类宏的原因

  • 为了让您免于记忆实际值
  • 在所有机器上具有一致的编程模式
  • 使用非常方便