Parenteses na Conversão

E aew Galera, blz?

Eu tava pensando hoje aqui, e fiquei com uma dúvida cruel.

Olhem o Código Abaixo:

short um = 1, dois = 2; short resul; resul = (short) (um + dois);

Complia, Correto? E eu faço a conversão baseado no fato de qualquer soma resulta pelo menos em um int.

Agora, se eu converter desse jeito, não compila:

short um = 1, dois = 2; short resul; resul = (short) um + dois;

Provavelmente, por causa dos parenteses. Mais ai é que ta: Com ou sem parenteses, a expressao continua a mesma, não é? Porque a soma tem procedencia maior do que a Conversão.

Alguem sabe desvendar esse Mistério da Natureza?

Valew Galera!

Acho que é isso:

Abaixo a conversão é para a variável um

short um = 1, dois = 2;  
short resul;  
resul = (short) um + dois;  

Nesse caso a conversão é para a soma das duas variáveis(um + dois)

short um = 1, dois = 2;  
short resul;  
resul = (short) (um + dois);  

Como se trata de uma expressão matemática ele segue as regras matemáticas :idea:

[quote=Jaba]Com ou sem parenteses, a expressao continua a mesma, não é? Porque a soma tem procedencia maior do que a Conversão.
[/quote]

Onde é você leu isso? A conversão tem precedência (não “procedência”) maior que a soma. Portanto as expressões são diferentes.

Onde é você leu isso? A conversão tem precedência (não “procedência”) maior que a soma. Portanto as expressões são diferentes. [2]

[]'s

[quote=thingol][quote=Jaba]Com ou sem parenteses, a expressao continua a mesma, não é? Porque a soma tem procedencia maior do que a Conversão.
[/quote]

Onde é você leu isso? A conversão tem precedência (não “procedência”) maior que a soma. Portanto as expressões são diferentes. [/quote]++;

E é justamente isso que acontece: como a precedência da conversão é maior, primeiro se converte a variável um para short (o que é inútil, pois ela já é desse tipo) e depois se soma, resultando em um int, não podendo-se atribuir esse valor em outro short.