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:
inti=0,j=1;if((i++ == 1) & (j++ == 2)){i=42;}System.out.println("i="+i+" j="+j);
o resultado será:
i=1 j=2
falow!
P
phstc
“Alexandre”:
c - Imprime: i=1 j=1
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.
eu quando eu faço isso ele não incrementa o valor do i
int i = 0;
int j = 0;
if((i+1 == 1) && (j++ == 0)){
// ...
}
[/code]
A
ana_abrantes
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.
brlima
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
Mas ainda bem que prestei atenção… hehehhehe
guscoppi
“Alexandre”:
c - Imprime: i=1 j=1
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.