porq vc está realizando uma operação de soma de um byte + char…
vou dar um exemplo:
o limite do char é de 65000(estou arredondando)…
imagine que nessa operação de soma de byte + char o valor ultrapsse o limite máximo do tipo char…
por isso é necessário usar o cast neste caso para evitar que ocorra isso…
T
TiagoTC
Acho que eu formulei mal a pergunta… A questão é que o código acima NÃO compila! Pra mim era pra compilar pois um byte cabe em um char… É essa minha dúvida.
V
vmsb11
ah sim…
agora eu entendi a sua dúvida…
o código não funciona…
troque:
charb3=(byte)(b+b2);porcharb3=(char)(b+b2);
T
TiagoTC
vmsb11:
ah sim....
agora eu entendi a sua dúvida....
o código não funciona....
troque:
Mas então, eu sei que se fizer essa troca o código vai funcionar... Mas a minha dúvida é por que não funciona com o cast para (byte) ... É essa minha dúvida!
O compilador neste caso não avisa nada sobre perda de precisão e tal...
rodrigo.bossini
Eu quis dizer que, para valores pequenos (até 128 ) o compilador é capaz de verificar o bit pattern desse valor (obviamente em tempo de compilação) e dizer que ali ocorreria (COM CERTEZA) a perda de precisão.
É óbvio que há possível perda de precisão e o compilador enxerga isso. Mas com o casting explícito você está avisando ele que tudo bem, vc está ciente da possível perda e arcará com as possíveis consequencias.
Lembrando novamente que o compilador somente é capaz de verificar o bit pattern dos números menores que 128 que estiverem digitados explicitamente no código.