Frage

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

In dem obigen Code-Schnipsel, was bedeutet "? " bedeuten? Was können wir ersetzen sie durch?

War es hilfreich?

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önnte
int 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top