Conversão

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.