Conversão

3 respostas
_

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?

3 Respostas

M

é 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); } }

S

Claro, pois um long pode receber um int sem problemas.
Mas um short não pode.

Criado 31 de maio de 2006
Ultima resposta 31 de mai. de 2006
Respostas 3
Participantes 3