OLa,
O cv tinha explicado que o será gerado um erro de compilação se fizer:
short a = 10
short b = 100
short c = a * b;
Pois short * short pode gerar um número acima de short.
Porém eu fiz uma pergunta que não obrive resposta.
Isso é pressuposto pelo compilador? Independente de quais meus valores, o compilador sempre irá encarar como um erro?
Se voce ver la, dentre outros tipos, short sera “promovido” para int no caso de determinados operacoes ( entre elas a soma e a multiplicacao )
Rafael
Rafael_Nunes
E isto acontece com os outros tipos primitivos? Ou somente com short?
Sei que deve estar lá na especificação, mas meu inglês não me permite por momento entender o link lá… :oops:
Rafael_Steil
Acontece com os tipos inferiores a int: byte, short, ou char
Rafael
cv1
Epa! char? :shock:
louds
Qual o problema cv? char é 1 tipo numerico.
cv1
Ugh. Eu sempre caio nessa.
Ironlynx
Como não custa nada lembrar:
For byte, from -128 to 127 (-27 to 27-1), inclusive
For short, from -32768 to 32767 (-215 to 215-1), inclusive
For int, from -[telefone removido] to [telefone removido] (-231 to 231-1), inclusive
For long, from -9223372036854775808 to 9223372036854775807 (-263 to 263-1), inclusive
For char, from 0 to 65535 inclusive
A JVM não tem instruções aritméticas para manipular diretamente valores do tipo short,byte e char,além dos valores booleanos.As operações desses tipos são tratados por instruções de operações do tipo int (Como iadd,imul…)
from JVMSpec