int qempty()
{
return (f == r ? 1 : 0);
}
Was bedeutet " ? " Im obigen Ausschnitt ? Womit können wir es ersetzen?
int qempty()
{
return (f == r ? 1 : 0);
}
Was bedeutet " ? " Im obigen Ausschnitt ? Womit können wir es ersetzen?
Antworten:
Dies wird allgemein als bedingter Operator bezeichnet , und wenn er wie folgt verwendet wird:
condition ? result_if_true : result_if_false
... wenn das condition
ausgewertet wird, true
wird der Ausdruck ausgewertet result_if_true
, andernfalls wird er ausgewertet result_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.
Dies ist ein ternärer Operator, es ist im Grunde eine Inline-if-Anweisung
x ? y : z
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.
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.
Nur eine Anmerkung, falls Sie dies jemals sehen:
a = x ? : y;
Es ist eine GNU-Erweiterung des Standards (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals ).
Es ist das gleiche wie
a = x ? x : y;
x = 1+1 ? : 0
; kehrt korrekt zurück 2
, 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;
}
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.