#define Unexpected Output

Contributor
1Feb2008,21:12   #1
shyam_oec's Avatar
#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.
Ambitious contributor
1Feb2008,21:56   #2
oogabooga's Avatar
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.

Last edited by oogabooga; 1Feb2008 at 22:00..