title: What is "int i = 1;Why (i >= 60 * 60 * 1000 / 1 * 1000)" true?
body: <p>First, defining two constant expressions without parentheses is my fault:</p>
  
  <pre><code>#define BIG_INTERVAL 60 * 60 * 1000
  #define SMALL_INTERVAL 1 * 1000
  
  int i = 1;
  
  if (i &gt;= BIG_INTERVAL / SMALL_INTERVAL - 1)
  {
      printf("Oops!\n");
  }
  </code></pre>
  
  <p>The <code>if</code> statement after the macro expansion is <code>if(i &gt;= 60 * 60 * 1000 / 1 * 1000 - 1)</code>. </p>
  
  <p>That is not my intention. But I find something strange if I write <code>if (i &gt;= 3600000000 - 1)</code>. It is false.</p>
  
  <p>What type is <code>60 * 60 * 1000 / 1 * 1000 - 1</code> ? <code>int</code>?</p>