Je me suis toujours demandé comment écrire la syntaxe"A ? B : C"
dans un langage compatible C++.
Je pense que cela fonctionne quelque chose comme: (pseudo code)
If A > B
C = A
Else
C = B
Est-ce qu'un ancien programmeur C++, s'il vous plaît, m'aide?
Cela fonctionne comme ceci:
(condition) ? true-clause : false-clause
Il est le plus souvent utilisé dans les opérations d'affectation, bien qu'il ait également d'autres utilisations. L'opérateur ternaire ?
permet de raccourcir une clause if-else. Il est également appelé une instruction if immédiate dans d'autres langues (IIf(condition,true-clause,false-clause)
en VB, par exemple).
Par exemple:
bool Three = SOME_VALUE;
int x = Three ? 3 : 0;
est le même que
bool Three = SOME_VALUE;
int x;
if (Three)
x = 3;
else
x = 0;
Cela fonctionne comme ceci:
expression ? trueValue : falseValue
Ce qui signifie fondamentalement que si expression
est évalué à true, trueValue sera renvoyé ou exécuté, et falseValue sera renvoyé ou évalué sinon.
N'oubliez pas que trueValue et falseValue ne seront évaluées et exécutées que si l'expression est vraie ou fausse, respectivement. Ce comportement s'appelle court-circuiter.
En c ++, il n'y a pas de réel si cela fait partie. C'est ce qu'on appelle l'opérateur ternaire. Il est utilisé comme ceci: <déclaration booléenne>? <résultat si vrai>: <résultat si faux>; Pour votre exemple ci-dessus, cela ressemblerait à ceci:
C = A > B ? A : B;
Cet article sur wikipedia en parle également: http://en.wikipedia.org/wiki/Ternary_operation
Je suppose que vous voulez dire des choses comme a = b? c: d, où b est la condition, c est la valeur lorsque b est vrai et d est la valeur lorsque b est faux.
Personne ne semble mentionner que le résultat d'une expression d'opérateur conditionnel peut être une valeur L en C++ (mais pas en C). Le code suivant est compilé en C++ et fonctionne bien:
int a, b;
bool cond;
a=1; b=2; cond=true;
(cond? a : b) = 3;
cout << a << "," << b << endl;
Le programme ci-dessus imprime 3, 2
Pourtant, si a et b sont de types différents, cela ne fonctionnera pas. Le code suivant donne une erreur de compilation:
int a;
double b;
bool cond;
a=1; b=2; cond=true;
(cond? a : b) = 3;
cout << a << "," << b << endl;
Je dirais le? est un raccourci. Cependant, certains programmeurs "durs" ont tendance à dire d'écrire le long chemin afin que, dans les cas futurs, les gens puissent facilement lire et modifier le code.
Par exemple, si vous écrivez
int a = b<c ? b : c;
Certaines personnes affirment qu'il est plus clair d'écrire:
if(b<c)
a = b;
else
a = c;
Parce que dans les cas futurs, les gens peuvent l'attraper. Bien sûr, un simple b <c? b: c est facile à saisir, mais des opérations complexes sont parfois effectuées et il peut être difficile à repérer.
IT IS QUITE SIMPLE C'EST LA SYNTAXE BASIQUE IS: Expression1? Expression2: expression3;
Si l'expression 1 est vraie, alors l'expression 2 sera valide, sinon l'expression 3 sera valide.
exemple:
hey=24>2?24:34;
ici comme condition est vraie, la valeur 24 lui sera assignée. Si elle était fausse, alors 34 lui seront assignés
simplement vous pouvez écrire ceci comme
C = (A> B)? A: B;
This IS MÊME QUE:
if(A>B)
C=A;
else
C=B;