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
This happens because your macro will expand as ( (x) > (increment()) ? (x) : (increment()) ).
( (x) > (increment()) ? (x) : (increment()) )
However, this is not the only problem, your code contains undefined behaviour. Parameters are not evaluated in a specified order.