#define Unexpected Output

shyam_oec's Avatar, Join Date: Nov 2007
Contributor
#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.
oogabooga's Avatar
Ambitious contributor
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..