int qempty()
{
return (f == r ? 1 : 0);
}
Was bedeutet " ? " Im obigen Ausschnitt ? Womit können wir es ersetzen?
c++
operators
ternary-operator
Thaier Alkhateeb
quelle
quelle
Antworten:
Dies wird allgemein als bedingter Operator bezeichnet , und wenn er wie folgt verwendet wird:
... wenn das
condition
ausgewertet wird,true
wird der Ausdruck ausgewertetresult_if_true
, andernfalls wird er ausgewertetresult_if_false
.Es ist syntaktischer Zucker und kann in diesem Fall durch ersetzt werden
int qempty() { if(f == r) { return 1; } else { return 0; } }
Hinweis: Einige Leute bezeichnen
?:
es als " den ternären Operator ", da es der einzige ternäre Operator (dh der Operator, der drei Argumente akzeptiert) in der Sprache ist, die sie verwenden.quelle
Dies ist ein ternärer Operator, es ist im Grunde eine Inline-if-Anweisung
funktioniert wie
if(x) y else z
außer, dass Sie anstelle von Anweisungen Ausdrücke haben; Sie können es also mitten in einer komplexeren Anweisung verwenden.
Es ist nützlich, um prägnanten Code zu schreiben, kann jedoch überbeansprucht werden, um schwer zu pflegenden Code zu erstellen.
quelle
a = x ? y : z;
Sie nicht sagenint a = if(x) y else z;
Sie können es einfach umschreiben als:
int qempty(){ return(f==r);}
Welches macht das gleiche wie in den anderen Antworten gesagt.
quelle
Nur eine Anmerkung, falls Sie dies jemals sehen:
Es ist eine GNU-Erweiterung des Standards (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals ).
Es ist das gleiche wie
quelle
x = 1+1 ? : 0
; kehrt korrekt zurück2
, in meinem Compiler und das hat nichts beanstandet.Es wird der bedingte Operator genannt .
Sie können es ersetzen durch:
int qempty(){ if (f == r) return 1; else return 0; }
quelle
Es ist der bedingte Operator.
ein ? b: c
Es ist eine Abkürzung für IF / THEN / ELSE.
bedeutet: Wenn a wahr ist, geben Sie b zurück, andernfalls geben Sie c zurück. In diesem Fall, wenn f == r, 1 zurückgeben, andernfalls 0 zurückgeben.
quelle
Das Fragezeichen ist der bedingte Operator. Der Code bedeutet, dass wenn f == r, dann 1 zurückgegeben wird, andernfalls 0 zurückgegeben wird. Der Code könnte wie folgt umgeschrieben werden
int qempty() { if(f==r) return 1; else return 0; }
Das ist wahrscheinlich nicht der sauberste Weg, aber hoffentlich hilft es Ihrem Verständnis.
quelle