int qempty()
{
return (f == r ? 1 : 0);
}
Was bedeutet "?" im obigen Snippet? Womit können wir es ersetzen?
Dies wird üblicherweise als bedingter Operator bezeichnet.
condition ? result_if_true : result_if_false
... wenn das condition
zu true
ausgewertet wird, ergibt der Ausdruck result_if_true
, sonst ergibt es result_if_false
.
Es ist syntaktischer Zucker , und in diesem Fall kann es durch ersetzt werden
int qempty()
{
if(f == r)
{
return 1;
}
else
{
return 0;
}
}
Hinweis: Einige Leute beziehen sich auf ?:
es als " der ternäre Operator ", weil es der einzige ternäre Operator (d. h. Operator, der drei Argumente verwendet) in der von ihnen verwendeten Sprache ist.
Dies ist ein ternärer Operator, im Grunde eine Inline-if-Anweisung
x ? y : z
funktioniert wie
if(x) y else z
anstelle von Anweisungen haben Sie jedoch Ausdrücke. Sie können es also mitten in einer komplexeren Anweisung verwenden.
Es ist nützlich, um prägnanten Code zu schreiben, kann jedoch übermäßig verwendet werden, um schwer zu verwaltenden Code zu erstellen.
Es heißt bedingter Operator .
Sie können es ersetzen durch:
int qempty(){
if (f == r) return 1;
else return 0;
}
Es ist der bedingte Operator.
ein ? b: c
Es ist eine Abkürzung für IF/THEN/ELSE.
bedeutet: wenn a wahr ist, gebe b zurück, sonst gebe c zurück. In diesem Fall, wenn f == r, gebe 1 zurück, andernfalls gebe 0 zurück.
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 dasselbe wie
a = x ? x : y;
Das Fragezeichen ist der bedingte Operator. Der Code bedeutet, dass, wenn f == r, dann 1 zurückgegeben wird, andernfalls 0. 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.