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:
[code]byte a = 2;
byte b = 2;
byte c = a+b; /Não compila/
int d = a+b; /Compila/
[/code]
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:
[code]byte a = 2;
byte b = 2;
byte c = a+b; /Não compila/
int d = a+b; /Compila/
[/code]
Porque a soma retorna um int. Você teria que fazer o cast do resultado:
byte c = (byte)(a+b);
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?
interessante essa pergunta nunca tinha observado isso…
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.