#define pro(X) (X*X) main() { int i=3,j,k; j=pro(i++); k=pro(++i); printf("\n%d %d",j,k); getch(); } output is 9 49 can any one explain why we get second output as 49. i guessed second output to be 25 before running the above code.
This is a combination of what is generally considered to be a bad macro (argument referenced twice) and the undefined behavior discussed here starting at post number 5.