Creio eu que neste caso foi usado um operador ternario, ou seja, um if/else.
Como foi atribuido 4 ao atributo x, a condição é testada.
Se x fosse > que 4 entao valor receberia 99.99, mas como x = 4 o Valor será 9, que é atribuição do else.
Será que viajei?
[]´s
H
hklemp
Rapaz!!!
Bem de primeira eu também achava que a resposta fosse 9 mas está errado, como a outra alternativa e double, os tipos de resposta devem ser compatíveis, então o valor 9 (int ) passa a ser double 9.0, a resposta deve ser 9.0. Acho que é por ai, se estiver errado por favor alguem me diga , valeu!
Bruno_Cardoso
Pois, realmente também pensei que fosse dar 9 mas agora que testei vi que realmente dá 9.0, não sabia que funcionava assim, agora já sei :lol:
PEACE!
thiagorani
Correta a sua resposta.
Rodei aqui é o resultado é Valor = 9.0
Ocorreu um casting automatico de int para double?
[]´s
duardor
Po esa me pegou tb!!!
Isso acontece por causa do ternario???
H
hklemp
Bem, a conversão não tem nada a ver com a operação ternária, o problema consiste no fato que temos dois tipos primitivos diferentes, um int e outro double, com isso para que possa ser possível a operação as variáveis devem ser do mesmo tipo, então o int passa a ser double (numeric promotion), acho que é esse o motivo da conversão, essa conversão pode acntecer em todas as operações, não somente na ternária. Espero que seja isso mesmo, qualquer coisa me corrijam.
Abraços, :lol:
Elvis.The.Pelvis
Tem a ver com a operação ternária sim.
<boolean> ? <expr1> : <expr2>
<expr1> e <expr2> devem ter o mesmo tipo, logo, a conversão é feita autimaticamente para o tipo mais “wide”.
Lembrem-se que os tipos devem ser compatíveis. se <expr1> for boolean, <expr2> também deve ser pois não se pode converter nenhum tipo de dado primitivo num boolean.