Soma com Short

6 respostas
F

Olá pessoal. Estava eu resolvendo alguns exercícios Java quando me deparei com um cálculo:

short n1, n2 = 2, n3 = 2; n1 = n2 + n3;

Quando tento compilar o código acima é apresentado o erro:

C:\Java\Teste2.java:4: possible loss of precision
found : int
required: short
n1 = n2 + n3;
^
1 error

Alguém tem alguma dica?

Desde já obrigado!

6 Respostas

E

A soma de dois inteiros é sempre um int ou long, dependendo dos argumentos. Somar 2 shorts dá um int.

Isso é esquisito, mas indica uma orientação do Java: para fazer contas, use double ou int (talvez long, se for o caso).

Short é algo que na maior parte das arquiteturas modernas (32 ou 64 bits) precisa de um passo adicional de processamento que torna a operação mais lenta, não mais rápida.

F

Realmente é estranho. Obrigado entanglement .

diego.sas

Vou tentar explicar de uma maneira, mas não é exatamente os valores corretos ok!

Vamos supor que:
short vai até : 99999
int vai até: 9999999999999

Logo short cabe dentro de um int.
Se fizermos:

short a = 99999;
 short b = 99999;
 short c = a + b; // concorda que a soma não caberá mais em um short.

Por isso que o retorno de uma soma do tipo Short é um int.
Flw

M

Você tem duas opções:

mudar o tipo de n1, para int por exemplo

ou

fazer uma coersão(cast)

n1 = (short)(n2 + n3);
alandiniz

eh isso ai… por isso temos o erro: possible loss of precision

F

Obrigado pessoal!

Criado 21 de março de 2012
Ultima resposta 22 de mar. de 2012
Respostas 6
Participantes 5