Warum ist 0 <-0x80000000?

Ich habe unten ein einfaches Programm:

#include <stdio.h>

#define INT32_MIN        (-0x80000000)

int main(void) 
{
    long long bal = 0;

    if(bal < INT32_MIN )
    {
        printf("Failed!!!");
    }
    else
    {
        printf("Success!!!");
    }
    return 0;
}

Die Bedingungif(bal < INT32_MIN ) ist immer wahr. Wie ist es möglich

Es funktioniert gut, wenn ich das Makro ändere zu:

#define INT32_MIN        (-2147483648L)

ann jemand auf das Problem hinweise

Antworten auf die Frage(12)

Ihre Antwort auf die Frage