I had tried to debug but no luck I can\'t understand why the second printf() is call increment() thrice but the first one call twice as expected.
#include &l
Because you tell it so:
MAX(x, increment())
evaluates to
( (x) > (increment()) ? (x) : (increment()) )
and if the condition is not fulfilled, the part after the : is evaluated and thus the function called again.
: