Porque no teste utilizando &&, se a primeira expressão for falsa, então,
consequentemente, o resultado da expressão será falso, e nem testa a 2ª
expressão. Por isso q ‘j’ não foi incrementado, pois a 2ª expressão nem foi
testada. Já a primeira sim.
Se quiser que a 2ª expressão seje testada, terá q utilizar o operador ‘&’, que testa byte a byte.
por exemplo:
int i=0, j=1;
if((i++ == 1) & (j++ == 2)){
i=42;
}
System.out.println("i="+i+" j="+j);
Porque no teste utilizando &&, se a primeira expressão for falsa, então,
consequentemente, o resultado da expressão será falso, e nem testa a 2ª
expressão. Por isso q ‘j’ não foi incrementado, pois a 2ª expressão nem foi
testada. Já a primeira sim.
Se quiser que a 2ª expressão seje testada, terá q utilizar o operador ‘&’, que testa byte a byte.
Porque o operator de incremento funciona assim mesmo.
Onde você vir i++, na verdade é o mesmo que i=i+1.
Ele soma o valor de 1 e atribui o resultado à variável i.
Por isso que i++ não é igual a i+1.
Neste segundo caso, o valor se perde, não é atribuído à variável i.
Caiu uma exatamente como essa ai… alias… duas vezes!!!
Só que mudou uma coisa: ele usou o operador ++ na frante em uma das variaveis… Daí a comparacao nunca entrava
Porque no teste utilizando &&, se a primeira expressão for falsa, então,
consequentemente, o resultado da expressão será falso, e nem testa a 2ª
expressão. Por isso q ‘j’ não foi incrementado, pois a 2ª expressão nem foi
testada. Já a primeira sim.
Se quiser que a 2ª expressão seje testada, terá q utilizar o operador ‘&’, que testa byte a byte.