在本文中,我们将了解在 C/C++ 中使用 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;
}
Output
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;
}
Output
value = 2147483647. Possible overflow!
Now, value = -2147483648
value = -2147483648. Possible underflow!
Now, value = 2147483647
虽然这需要花费几秒钟的时间来运行,但这确实达到了我们的预期。
整数将溢出到INT_MIN
,并将下溢到INT_MAX
.
这对于检测值的此类跳跃很有用。
通常,对于某些算法,有时需要将变量初始化为最低/最高值。
数据类型的位数可能因机器而异。
为了使最大/最小值的使用保持一致,如果每个人都可以使用相同的宏就方便了!
这正是这些宏存在的原因 -
- 以免您记住实际值
- 在所有机器上具有一致的编程模式
- 使用起来非常方便
希望这些原因可以说服您在构建自己的 C/C++ 库时使用此类宏。
在本文中,我们学习了如何在 C / C++ 中使用 INT_MAX 和 INT_MIN 宏。
对于类似的内容,请浏览我们的教程部分关于C编程。