Was macht '?' tun in C ++?
-
18-09-2019 - |
Frage
int qempty()
{
return (f == r ? 1 : 0);
}
In dem obigen Code-Schnipsel, was bedeutet "? " bedeuten? Was können wir ersetzen sie durch?
Lösung
Dies wird gemeinhin als der Konditionaloperator und wenn wie folgt verwendet:
condition ? result_if_true : result_if_false
... wenn der condition
true
auswertet, wertet der Ausdruck result_if_true
, sonst wertet es result_if_false
.
Es ist syntaktischer Zucker , und in diesem Fall kann es mit
int qempty()
{
if(f == r)
{
return 1;
}
else
{
return 0;
}
}
Hinweis: beziehen Einige Leute es ?:
als " die ternäre Operator ", weil es der einzige ternäre Operator (dh Betreiber, die drei Argumente verwendet) ist in der Sprache sie verwenden.
Andere Tipps
Dies ist ein ternärer Operator, es ist im Grunde ein Inline-if-Anweisung
x ? y : z
funktioniert wie
if(x) y else z
außer, statt Anweisungen, die Sie Ausdrücke haben; so können Sie es in der Mitte einer komplexeren Anweisung verwenden.
Es ist nützlich für prägnanten Code zu schreiben, kann aber überstrapaziert werden schwer zu schaffen Code zu erhalten.
Sie können nur umschreiben als:
int qempty(){ return(f==r);}
Welche das Gleiche tut wie die in den anderen Antworten.
Es ist der Konditionaloperator genannt.
Sie können es ersetzen mit:
int qempty(){
if (f == r) return 1;
else return 0;
}
Es ist der Bedingungsoperator.
a? b: c
Es ist eine Abkürzung für IF / THEN / ELSE.
bedeutet: wenn a wahr ist, kehren b, sonst Rückkehr c. In diesem Fall, wenn f == r, 1 zurück, sonst return 0.
Nur eine Notiz, wenn Sie jemals sehen:
a = x ? : y;
Es ist eine GNU-Erweiterung zum Standard (siehe https: //gcc.gnu .org / onlinedocs / gcc / Conditionals.html # Conditionals ).
Es ist die gleiche wie
a = x ? x : y;
Das Fragezeichen ist der Bedingungsoperator. Der Code bedeutet, dass wenn f == dann r 1 zurückgegeben, ansonsten Rückgabe von 0. Der Code wie
neu geschrieben werden könnteint qempty()
{
if(f==r)
return 1;
else
return 0;
}
das ist wahrscheinlich nicht der sauberste Weg, es zu tun, aber hoffentlich hilft Ihr Verständnis.