Questão Certificação

7 respostas
maxguzenski

Qual a saida?

class Saida {
	public static void main(String[] args) {

		int x = 0;
		int y = 0;

		for (int z = 0; z < 5; z++) {
			if (x++ > 2 && y++ >2 ) ++x;
		}

		System.out.println(x+" "+y);
	}

}

7 Respostas

smota

7 5 :?:

Bem, pelo que entendi é … :roll:

H

Bom, na minha lógica deu 5 e 2.

Certo?

luiz_ross

Eu tambem acho que é 5 2.

smota

oooooooooops tinha esquecido que o y++ não vai executar antes do Y ser maior que 2 . foi mal, furo meu :?

M

acho que deu 6 e 1

maxguzenski

a resposta é 5 2

marciolx

teste de mesa:

lembrando que:

1 - se a primeira condição (x++ > 2) for false, toda a sentença será falsa e a segunda parte (y++ > 2) não será executada.
2 - o valor usado nas comparações (ex.: x++ > 2) é o valor atual da variável, somente depois da comparação ela é incrementada

para z = 0
0 (x) não é maior que 2, então só incrementa x
x = 1, y = 0

para z = 1
1 (x) não é maior que 2, então só incrementa x
x = 2, y = 0

para z = 2
2 (x) não é maior que 2, então só incrementa x
x = 3, y = 0

para z = 3
3 (x) é maior que 2, mas 0 (y) não é maior que 2, então a condição ainda é false e só incrementa x e y 1 vez
x = 4, y = 1

para z = 4
4 (x) é maior que 2, mas 1 (y) não é maior que 2, então a condição ainda é false e só incrementa x e y 1 vez
x = 5, y = 2

Acertou quem respondeu 5 2 :wink:

Criado 27 de junho de 2003
Ultima resposta 27 de jun. de 2003
Respostas 7
Participantes 6