Soma de variáveis Bytes

4 respostas
H

Alguém podería me explicar por que a soma de duas variáveis Byte não podem ser atribuídas em uma nova váriável Byte?

Exemplo:

byte a = 2;
byte b = 2;

byte c = a+b; /*Não compila*/

int d = a+b; /*Compila*/

4 Respostas

ViniGodoy

Porque a soma retorna um int. Você teria que fazer o cast do resultado:

byte c = (byte)(a+b);
H

Mas qual é motivo de ele fazer isso? Se somo dois Ints eu consigo atribuir em uma variáel int normalmente, por que o mesmo não acontece com Byte?

dtxk

interessante essa pergunta nunca tinha observado isso…

ViniGodoy

Essa é mais uma daquelas perguntas cuja resposta é “porque fizeram assim”.

Operações como somas e subtrações podem estourar os limites da variável. Por isso, a conversão automática para int, que é o tipo mais eficiente e conveniente na maioria dos casos, e o tipo de dados inteiro recomendado.

Mas claro, isso pode acontecer com o int também, nem por isso o java retorna long na soma. Por isso afirmo que foi uma decisão de design.

Criado 15 de setembro de 2011
Ultima resposta 15 de set. de 2011
Respostas 4
Participantes 3