As you mentioned that if statement is false is true.
But i believe the concept/logic used is somewhere inappropriate, the reason will follow.
Before that lets understand the working of &&(Logical AND) operator.
If states that if both the operands associated with it are true then only the result is true.
NOTE: 1. for the compiler it means that if any one operand is false that the compiler will not compute further i.e. skip to next valid line of code.
2. 0(zero) states to false - in programming.
Well,
Compiler at the first go search for the operator and then look for the operands which are
associated with it.
So, as soon as the compiler encounter '&&' it will look at the left side of the operator as
the associativity of &&(Logical AND) is left-to-right and evaluate the value for the operand on the left which is 0(zero).
Now, refer the note 2 and then 1.
Hence, the compiler jump to the next valid statement which is
printf("%d...%d",i,j);
Here, no increment was made to variable 'j", therefore the value of "j" will remain 0(zero).
NOTE: To further get clear with the idea, I would suggest to try the same example with different values of i and j, like i=1 and j=1 or i=2 and j=1.