Possible Duplicate:
Problem with operator precedence
we know that precedence of prefix is greater than "LOGICAL AND" (&&
) and precedence of "LOGICAL AND" is greater than "LOGICAL OR" (||
).
Below program seems to violate it:
int main()
{
int i=-3,j=2,k=0,m;
m=++i||++j&&++k;
printf("%d %d %d %d",i,j,k,m);
return 0;
}
If precedence of ++
is more than &&
and ||
then all prefix should execute first. After this i=-2,j=3,k=1
and then &&
will execute first.
why output shows : -2 2 0 1
?
The behavior of the program is also same on ubuntu v12.04.