title: #define function gives me unexpected result
body: <p>I defined a function using #define, but when I print out a simple result of an operation it gives me an unexpected result. Here is the code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  #define CUBE(x) (x * x * x)
  
  int main() {
  int m, n = 3;
  m = CUBE(n + 1);
  printf("%d %d", m, n--);
  return 0;
  }
  </code></pre>
  
  <p>The result printed is 10 and 3 and I can't understand why. Since it multiplies n by itself 3 times, and then adds 1, shouldn't the result be 28 and 3?</p>