Olá gente, estou estudando para a certificação e me deparei com uma dúvida esquisita.
bom, é fato que:
1º Todos os literais inteiros são int.
2º Todos os literais quebrados são double.
Segindo essas regras temos:
2º regra
o código acima não compila pois 0.5 é um literal quebrado, portanto um double, então não pode ser colocado em uma variavel float sem ser convertido (até aqui tudo bem)
1º regra (aqui é que fica minha dúvida)
O código acima compila !!!
Não deveria, pois, segundo o livro da Kathy, que foi o mesmo livro que eu peguei a primeira regra, diz que um literal inteiro é sempre um tipo int, portanto baseando-se na segunda regra, o código acima não poderia compilar, pois sete é um literal int e não pode ser colocado dentro de uma variavel byte implicitamente.
Alguém pode me explicar pq q o código acima funcionou?
BRigadão gente