Because of operator precedence and associativity
i = x < y < z;
is parsed as:
i = ((x < y) < z);
After substituting the variable values, this becomes:
i = ((10 < 10) < 5);
Since 10 < 10
is false, this becomes:
i = (0 < 5);
Since 0 < 5
is true, that becomes:
i = 1;