Tipo Primitivos

Pessoal, não entendi porque não consegui compilar o código abaixo. Já que a variavel a e b são do tipo byte de 8 bits. Como uma variavel short© de 16 bits não conseguiu receber os valore de a e b?? :?:

public class Literais{
    public static void main(String[] args)
     {
         byte a = 1;
         byte b = 1;
         short c; 
         c = a + b;
         System.out.println(a);
    }
}

Valew.
:smiley:

Pq é regra da linguagem uai… :wink:
Nessas operacoes aritmeticas ocorre promoção de tipo, elevando-o para o maior entre os dois operandos, e, ainda, devendo ser no mínimo um int. Assim, o resultado da operação é devolvido em int.

Pega qualquer livro pra SCJP que vai te explicar facilmente essas regrinhas, às vezes meio bizarras até. :?

[quote=Gerson]Pq é regra da linguagem uai… :wink:
Nessas operacoes aritmeticas ocorre promoção de tipo, elevando-o para o maior entre os dois operandos, e, ainda, devendo ser no mínimo um int. Assim, o resultado da operação é devolvido em int.

Pega qualquer livro pra SCJP que vai te explicar facilmente essas regrinhas, às vezes meio bizarras até. :? [/quote]

Unn…então toda operação vai ocorrer promoção de tipo e tudo no final vira int?

No mínimo um int, se um long estiver envolvido, por exemplo, a promoção será para o long.