如何在不溢出的情况下提取INT_MIN
的绝对值?请参阅此问题的代码:
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("INT_MAX: %d\n", INT_MAX);
printf("INT_MIN: %d\n", INT_MIN);
printf("abs(INT_MIN): %d\n", abs(INT_MIN));
return 0;
}
输出如下:
INT_MAX: 2147483647
INT_MIN: -2147483648
abs(INT_MIN): -2147483648
我需要这个来检查一个int
值是否大于零。
至于这个问题是否与为什么最大负整数-2147483648的绝对值仍然是-2147483648?重复,我不同意,因为这是一个如何(HOW)问题,而不是为什么(WHY)问题。
INT_MIN
的绝对值存储在unsigned int
中... - Oliver Charlesworth