Need explanation on output of this C program : <pre><code>#include &lt;stdio.h&gt;

#define F1(X) ((X &gt; 0) ? X : -(X))
#define F2(X) (X &gt; 0) ? X : -X

int main(){
    int a=5, b=10;
    printf("F1=%d, F2=%d\n", F1(a-b), F2(a-b));
    return 0;
}
</code></pre>

<p>The output is: <code>F1=5, F2=-15</code></p>

<p>Of course, I'd think that the output of F1 and F2 should be the same. What do the parentheses have anything to do with the output?</p>
