Um byte tem 8 bits e um char tem 16 bits … A Keity disse o seguinte: Qualquer retorno que puder ser implicitamente
convertido ou qualquer retorno que puder ser explicitamente convertido, eu não preciso de um cast para isso…
staticbytem1(){finalcharc1='\u0100'; returnc1; // 0x0100 = 256, maior que 1 byte}
Gustavo_Santos
Bom, não entendi… Continuo na dúvida…
E
entanglement
A idéia é a seguinte: normalmente, você teria de retornar um valor compatível (no caso de byte, você teria de retornar um byte, certo)?
Só que quando o valor é constante, em determinadas condições. que são as que você estudou no livro, é possível passar um valor que seria incompatível (char > byte, certo?) mas como o valor é constante e cabe no retorno, excepcionalmente ele deixa usar.
É por isso que “return ‘\u0001’;” (um char que cabe direitinho em um byte) compila mas “return ‘\u0100’;” (um valor que passou de 1 byte) não compila.
ViniGodoy
O valor é final. Então o compilador tem certeza de que o conteúdo do char vale 1.
Se vale 1, cabe num byte, e não precisa ser feito nenhum cast.
O entanglement mostrou uma situação que o compilador sabe que vale mais do que 255, e então exige o cast.