webentwicklung-frage-antwort-db.com.de

Was macht '?' in C ++ machen?

int qempty()
{
    return (f == r ? 1 : 0);
}

Was bedeutet "?" im obigen Snippet? Womit können wir es ersetzen?

64

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.

112

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.

14
Richard

Es heißt bedingter Operator .

Sie können es ersetzen durch:

int qempty(){ 
    if (f == r) return 1;
    else return 0;
}
5
jjnguy

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.

3
Joe

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;
3
Nick Kossifidis

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.

2
ssakl