在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"。
这对于检测这些值的跳跃很有用。
为什么我们需要这些宏?
通常,对于某些算法,有时有必要将变量初始化为最低/最高值。
数据类型的位数可能会因计算机而异。
为了使最大值/最小值的用法保持一致,如果每个人都可以使用相同的宏,那将很方便!
这正是存在此类宏的原因
- 为了让您免于记忆实际值
- 在所有机器上具有一致的编程模式
- 使用非常方便