为什么我可以分配一个超出其范围的 int 值?

Why can I assign a value of int that is out of its range?

所以我试图找到数组中最大和第二大的整数。所以我将它设置为可能的最小值,它似乎可以低于 -(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];
        }

    }
}

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

#include <limits.h>

int val = INT_MIN;

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