为什么我可以指定超出其范围的int值?

时间:2015-02-25 16:11:09

标签: c int

所以我试图找到数组中最大和第二大的整数。所以我认为它是可能的最小值,看起来它可以低于 - (2 ^ 31)。

我尝试使用大到-2 ^ 63的值,它仍然有用

void findMax1Max2(int m[], int size, int *max1, int *max2)
{
    int i;

    *max1 = -2147483648;
    *max2 = -2147483648;
    for (i = 0; i < size; i++)
    {
        if (m[i] > *max1){
            *max2 = *max1;
            *max1 = m[i];
        }
        else if (m[i] > *max2){
            *max2 = m[i];
        }

    }
}

1 个答案:

答案 0 :(得分:3)

获得最小整数值的正确方法是

#include <limits.h>

int val = INT_MIN;

关于您的问题,您应该阅读此blog post,解释为什么INT_MIN被定义为-2147483647 - 1而不是-2147483648