C Operator Precedence, post-increment programming issue -
can 1 explain why output of program is
0 1 1 3 1
void main(void) { int i=-1,j=0,k=1,l=2,m; m=i++&&j++&&k++||l++; printf("%d %d %d %d %d",i,j,k,l,m); } main concern "why k not incremented".
fyi..i compiling program in vc++ editor windows 7 32 bit. many in advance.
roughly:
to evaluate i++&&j++, compiler evaluated i first. result -1. -1 stored in temporary variable. i got incremented.
because -1 not zero, compiler evaluated j, 0. compiler evaluated -1 && 0, 0. j got incremented.
at point, i = 0 , j = 1. remaining expression: m=0&&k++||l++;
to evaluate 0&&k++, compiler noted first operand 0. result must 0 compiler didn't evaluate k or k++. remaining expression: m=0||l++;
i hope can rest. :)
Comments
Post a Comment