title: Why is 0 < -0x80000000?
body: <p>I have below a simple program:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  #define INT32_MIN        (-0x80000000)
  
  int main(void) 
  {
      long long bal = 0;
  
      if(bal &lt; INT32_MIN )
      {
          printf("Failed!!!");
      }
      else
      {
          printf("Success!!!");
      }
      return 0;
  }
  </code></pre>
  
  <p>The condition <code>if(bal &lt; INT32_MIN )</code> is always true. How is it possible?</p>
  
  <p>It works fine if I change the macro to:</p>
  
  <pre><code>#define INT32_MIN        (-2147483648L)
  </code></pre>
  
  <p>Can anyone point out the issue?</p>