Les opérateurs ternaires ressemblent à ceci mon professeur dit que les opérateurs ternaires utilisent 3 opérandes p> qui sont ici mais lorsque nous écrivons p> M code>,
A code> et
B code> ...
Même si
m code> est en réalité la variable où nous stockons les données ... p>
m code> comme variable de stockage alors pourquoi n'est-ce pas une déclaration ternaire? p> p>
4 Réponses :
L'expression dans votre exemple est juste in Notez que ma réponse ne dit rien sur l'opérateur d'affectation m code> n'est pas un opérande de l'un des deux opérateurs (l'opérateur conditionnel ternaire et l'opérateur
+ code>) dont vous avez posé le nombre d'opérandes. C'est juste la variable deux que vous attribuez le résultat de ces deux opérateurs. P>
(a> b)? A: B code> et les opérandes sont
(a> b) code>,
a code> et
b code>. p>.
A + B code>, les opérandes sont
A code> et
B code>, il n'y a donc que deux opérandes. P>
= code>, que la question n'a pas posé de questions sur. P>
M CODE> est un opérande du
= CODE> Opérateur d'affectation. JLS 15.26. Opérateurs d'affectation : Le premier opérande d'un opérateur d'affectation doit être une variable. I>
? code> et
: code> ne sont pas 2 opérateurs. C'est 1 opérateur avec 3 opérandes. JLS 15.25. Opérateur conditionnel
? : code>
: L'opérateur conditionnel a trois expressions d'opérande. I>
@Andreas Ma réponse faisait référence à l'opérateur conditionnel ternaire et à l'opérateur + code>. Je ne parlais pas de l'opérateur
= code> n'importe où. J'ai clarifié la réponse.
@Andreas je n'ai jamais écrit ça? et: sont 2 opérateurs. L'OP a demandé pourquoi l'opérateur conditionnel ternaire a 3 opérandes et l'opérande + ne le fait pas. Ce sont les 2 opérateurs que je faisais appelé.
Il n'était pas certain que les opérateurs que vous avez mentionnés et ne sont toujours pas assez clairs après votre édition. Il est trompeur lorsque la réponse commence " m code> n'est pas un opérande ..." i>, car
m code> est très définitivement un opérande dans le code indiqué .
@Andreas Oui, si vous choisissez de lire simplement le début de la phrase, cela devient incorrect.
Le mot alors vous l'utilisez dans une impression ou enregistrez-la, mais cela ne fait pas partie de l'opérateur ternaire lui-même p> opérandes code> ne fait pas référence à la variable utilisée, mais à la différence de l'opérateur ternaire. Ils sont
résultat1 code> sera renvoyé si la conférence est évaluée à
true code> li>
condition1 code> la condition pour déterminer le résultat li>
résultat2 code> sera renvoyé si la conférence est évaluée à
false code> li>
ul>
Si vous regardez l'arbre de syntaxe abstrait de Ce serait quelque chose comme: p> Le "ternaire" fait référence à Le fait que L'affectation est un arbre binaire, car il a deux enfants directs (l'identifiant et l'expression conditionnelle). P> L'arborescence pour à nouveau (et toujours), l'affectation est un opérateur binaire, avec deux enfants directs: l'identifiant et l'addition. L'ajout est un opérateur binaire distinct, avec deux enfants directs. P> p> conditionnelexpression code> a 3 enfants directs dans l'arborescence (l'arborescence parenthèse et les deux identifiants). p>
m = A + B; Code> serait: p>
L'arité d'un opérateur est déterminée par le nombre d'opérandes / arguments. Il existe des opérateurs unia qui prennent un opérande comme Les opérandes peuvent utiliser la même variable ou l'expression. Par exemple, dans l'expression Cela vous laisse avec Cet opérateur est défini dans §15.25 des JLS : p>
i ++ code> (post-incrément), des opérateurs binaires tels que
A + B code> qui prennent deux arguments, et il y a le ternaire
a? B: C code> qui prend trois opérandes. p>
a + a code>, l'opérateur
+ code> est toujours un opérateur binaire em> em> qui prend deux arguments - il faut juste le même argument deux fois. p>
m =
m code> dans votre cas et sur le côté droit, vous avez l'expression (complexe) qui donne la valeur. p>
(a> b)? A: B code>. Il y a encore trois opérandes - le conditionnel est
(a> b) code>, le
a code> est la expression vraie em> et le
B < / code> est la false expression em>. p>
? code> apparaît entre les première et seconde expressions et
: code> apparaît entre les deuxième et troisième expressions.
(Mettre en surbrillance la mine). P>
blockQuote>
m code> n'est pas un opérande.
(A> B) code> est le premier opérande,
A code> est seconde,
B code> est troisième.
x? Y: z code> - 3 opérandes.
x + y code> - 2 opérandes.
Mon professeur a dit que
m code> est opérand
Dans
m = A + B code>, vous avez réellement deux opérateurs,
= code> et
+ code>, chacun avec deux opérandes.
En outre, le
?: Code> ne fait pas une déclaration ternaire déclaration i>: c'est une expression i>.
? : code> est l'opérateur.
+ code>,
- code>,
* code>,
/ code>,
% code>,
^ < / Code>,
! code>, etc. Tous les opérateurs i>. Opérateurs binaires tels que
+ code> fonctionne sur deux opérandes i>.
Si votre professeur dit que
m code> est un opérande de l'opérateur ternaire, alors votre professeur se trompe.