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

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -