E ai galera, na hora de compilar este código fiquei com dúvidas.
import java.lang.Math.*;
public class Teste {
public static void main(String []args)
{
byte b = 4;
short s = 5;
short x = (short)s*b;
System.out.println(x);
}
}
O compilador mostra um erro, mas quando eu faço isso
short x = (short)(s*b);
ele aceita conpila normalmente e mostra o resultado, qual é a razão para ocorrer isto na conversão?
é que quando vc faz o casting direto na frente de uma variavel ele converte apenas aquela variavel… entao vc fez o seguinte shor*int = int
ja quando vc faz o casting com parenteses vc faz o seguinte: (short)(int * int); fazendo o casting direto no resultado da multiplicacao
Não foi muito convincente, o código abaixo compila normalmente:
import java.lang.Math.*;
public class Teste {
public static void main(String []args)
{
byte b = 4;
short s = 5;
long x = (short)s*b;
System.out.println(x);
}
}
Claro, pois um long pode receber um int sem problemas.
Mas um short não pode.