¿Por qué es 0 <-0x80000000?

Tengo debajo un programa simple: #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; } La condición if(bal < INT32_MIN )es siempre cierta. ¿Como es...