C #define strange outputs : <pre><code>#include &lt;stdio.h&gt;
#define test(x) x*x
#define test2(x) x
int main(void) {    
int x=5;
printf("%d %d %d %d %d %d",test2(x), test2(x-2), test(x), test(x-2),4*(test(x-3)),4*test(x-3));
return 0;
}
</code></pre>

<p>This gives the output as :</p>

<p>5 3 25 -7 -52 2</p>

<p>Well can understand for first 3 but why -7 when test(x-2) and for last 2…</p>
