public class TypeCast {
public static void main(String[] args){
float x = 6.77f;
int a = x + 2; // Erro de Compilação, atribuição de float aonde se esperava int
int b = 2;
b += x; // OK!? Igual a 8
System.out.println(b);
}
}
Salve, salve!
Numa operação entre operandos do tipo [i]float[/i] e [i]int[/i] é natural que tenhamos um [i]float[/i] como resultado. O qual não poderia ser atribuído a uma variável do tipo [i]int[/i]. Até aqui tudo dentro do esperado…
Mas o que me deixou com alguns cabelos brancos a mais é que a mesma operação realizada através do operador +=, misteriosamente é admitida pelo compilador e retorna o resultado correto! :shock:
Pelo meu entendimento, o compilador interpretou a expressão como [i]b = (int) (b + x)[/i]. É isso mesmo? Existe alguma explicação lógica?