title: So many parentheses in gcc standard headers
body: <p>Why are constant expressions in GCC header files surrounded by parentheses, like this?</p>
  
  <pre><code>#define INTMAX_MIN (-9223372036854775807LL)
  #define INTMAX_MAX (9223372036854775807LL)
  </code></pre>
  
  <p>What would be the difference if I omit parentheses, this way?</p>
  
  <pre><code>#define INTMAX_MIN -9223372036854775807LL
  #define INTMAX_MAX 9223372036854775807LL
  </code></pre>
  
  <p>And why is there the 'L' suffix? Would it be the very same if I write the following?</p>
  
  <pre><code>#define INTMAX_MIN -9223372036854775807
  #define INTMAX_MAX 9223372036854775807
  </code></pre>
  
  <p>Is there an actual usefulness or is it always the same thing?</p>
  
  <p>I'm aware that the 'L' stands for long and I'm also well aware of the importance of parentheses in C macros; I'm asking this for the sake of curiosity.</p>