Je traversais certains questions d'entrevue Java MCQ où j'ai trouvé cet extrait de code, dont je n'ai pas compris la sortie, bien que son seul code de 2 lignes. sortie est de 9,0
Je n'ai pas compris pourquoi ce n'est pas 9? P> p>
3 Réponses :
Le type de retour de l'opérateur ternaire est déterminé en fonction de règles assez compliquées: Spécification de la langue Java . Plus précisément, dans votre cas: p>
Sinon, la promotion numérique binaire (§ 5.6.2) est appliquée aux types d'opérande et le type de l'expression conditionnelle est le type promçu des deuxième et troisième opérandes. P> blockQuote>
Donc, dans votre cas, vous obtenez le type de retour double. P>
Opérateur ternaire a le type de retour défini avant le calcul de la valeur. Donc, si l'opérateur peut renvoyer à la fois du flotteur et d'INT, les deux valeurs sont prélevées sur le flotteur. Votre réponse est de cette manière:
int a = 2; float b = 4.3f; float c = a + b;
Parce que vous ne les coulez pas tous. Vous venez de casser le second résultat à int.
mais n'oubliez pas le premier résultat est flottant afin que toute la structure doit être de même type.
Vous devez tous les jeter en tant que même type comme l'int ou le flotteur. P> sortie: p>
Java est une langue statistique typée, ce qui signifie entre autres choses que toute expression a un type. Quel type mais un point de flotte numéro un pourrait-il avoir ici? Comme 9.9 est une valeur de résultat possible de cette expression, un type de numéro entier est incapable de le faire.
essayez
system.out.println ((int) (((A <8)? 9.9: 9.0)); Code>