| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2010 19:38:55
|
TiagoTC
JavaTeenager
Membro desde: 09/02/2008 01:12:58
Mensagens: 189
Offline
|
Por que não ocorre um cast automático do tipo "byte" para o tipo "char" ? Um byte não cabe sempre em um char?
This message was edited 1 time. Last update was at 06/02/2010 19:40:36
|
Pérola: "Nunca coloque seu celular em um forno de microondas, pois isso faz com que a bateria exploda" - Manuais de telefones celulares |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2010 20:05:22
|
vmsb11
Java Ninja
Membro desde: 25/08/2008 12:35:00
Mensagens: 251
Offline
|
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....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2010 20:35:23
|
TiagoTC
JavaTeenager
Membro desde: 09/02/2008 01:12:58
Mensagens: 189
Offline
|
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.
|
Pérola: "Nunca coloque seu celular em um forno de microondas, pois isso faz com que a bateria exploda" - Manuais de telefones celulares |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2010 21:00:49
|
vmsb11
Java Ninja
Membro desde: 25/08/2008 12:35:00
Mensagens: 251
Offline
|
ah sim....
agora eu entendi a sua dúvida....
o código não funciona....
troque:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2010 22:07:32
|
TiagoTC
JavaTeenager
Membro desde: 09/02/2008 01:12:58
Mensagens: 189
Offline
|
vmsb11 wrote: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!
|
Pérola: "Nunca coloque seu celular em um forno de microondas, pois isso faz com que a bateria exploda" - Manuais de telefones celulares |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2010 08:02:39
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
Agora você consegue descobrir sozinho pq seu código não compila.
This message was edited 1 time. Last update was at 07/02/2010 08:03:42
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2010 11:04:11
|
TiagoTC
JavaTeenager
Membro desde: 09/02/2008 01:12:58
Mensagens: 189
Offline
|
rod.attack wrote:
Agora você consegue descobrir sozinho pq seu código não compila.
Seguindo esse seu raciocínio, por que então o seguinte código compila normalmente?
O compilador neste caso não avisa nada sobre perda de precisão e tal...
|
Pérola: "Nunca coloque seu celular em um forno de microondas, pois isso faz com que a bateria exploda" - Manuais de telefones celulares |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2010 14:05:06
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
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.
Outro exemplo:
Agora o seguinte:
É ó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.
This message was edited 2 times. Last update was at 07/02/2010 14:05:47
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
|
|