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.