When i run the following code

main()

{

int i=-3,j=2,k=0,m;

m=++i&&++j||++k;

printf("\n %d %d %d %d " ,i,j,k,m);

}

the result i get is

-2 3 0 1

What i'm not able to understand is that why the value of k is not incremented??

I was trying different things with the expression , i noticed that if i use m=++i&&++j&&++k; instead of the original expression the result is

-2 3 1 1

i.e. this time k has been incremented ...WHY??