sim, mas quando passo o valor 30 pro byte não da erro, e sim quando passo a expressão a+b, que resulta em 7
renatosilva
Porque 30 sempre cabe num byte, mas a + b nem sempre cabe num byte.
mrcastro
Agora sim, entendi. É uma forma de se prevenir, já que nao da pra saber qual será o valor de a nem b
renatosilva
Sim, por exemplo se a ou b fosse um parâmetro do método
T
truck1n
A soma de dois byte (a + b) gera um int, a soma de dois short também vai gerar um int.
por isso o compilador reclama que precisa fazer um cast.
Abraço
ricardo13
olá,
De acordo com o post acima, é realmente isso que ele faz.
Toda operação entre numeros inteiros retorna sempre um int.
Assim como para numeros de ponto flutuante o valor padrão é double.
Espero ter ajudado
ricardo
rodrigo.ferreira
Exatamente.
Quando usamos NÚMEROS LITERAIS (DIGITADOS “NA UNHA”), rrsrs… o compilador consegue ver se o número CABE na variável, ou seja:
byteb=100;// Ok - 100 é menor que 127, portanto não precisa de Cast,
Só que, se eu fizesse isso:
byteb=3550;// Não vai compilar, CAST EXPLÍCITO é necessário por que 3550 é maior que 127, portanto o compilador sabe que haverá uma possível perda de precisão e deve te alertar sobre isso.
Quando usamos variáveis, o compilador (em tempo de compilação, claro) NÃO TEM CONDIÇÕES DE SABER O VALOR DA VARIÁVEL, portanto ELE SEMPRE VAI LHE SOLICITAR CAST.
A mesma regra se aplica a todos os outros tipos primitivos.