dúvida operador +

2 respostas
cu_ringa

esse codigo a resposta é 6.

public class Operador {

	Operador(){

		int x = 2;
		int y = 3;

		System.out.println(x++ + ++x);

		/*
		if((x++ + ++x) == 5){
			System.out.println("== 5" + x);
		}
		else
			System.out.println("!= 5 " + x);
		 */
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Operador();
	}
}

esse a reposta é: != 5 4. pq x é 4 e não 6 ???

public class Operador {

	Operador(){

		int x = 2;
		int y = 3;

		//System.out.println(x++ + ++x);

		if((x++ + ++x) == 5){
			System.out.println("== 5" + x);
		}
		else
			System.out.println("!= 5 " + x);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Operador();
	}
}

aproveitando o embalo, qnd faço

int y = 1;
if((y++ + ++y) == 4)

o compilador monta os bytecode parecido com isso:

pega o valor de y q é 1, ai pega o valor do “outro” y q é 2, soma os 2 y q vai dar igual a 3 e antes de fazer o teste de igualdade soma o 1 da primaira instrução do pos-incremento.

2 Respostas

diego2005

Olá,

int x = 2; System.out.println(x++ + ++x);

Isso é igual a 6

T+

D

Acho que vc entendeu o porquê da soma ser 6, certo?

O primeiro termo considerado é 2. Após isso é feito um incremento, logo x passa a ser 3.
O segundo termo considerado seria 3, se o incremento não tivesse sido feito antes da soma, logo o termo passa a ser 4.

A soma portanto é 6 (2+4) e o valor de x é 4 (pelas sucessões de incrementos)…
Espero ter auxiliado

Criado 20 de julho de 2007
Ultima resposta 20 de jul. de 2007
Respostas 2
Participantes 3