Domanda

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

In questo frammento di codice, che cosa significa " " significa? Cosa possiamo sostituirlo con?

È stato utile?

Soluzione

Questo è comunemente indicato come il operatore condizionale , e quando viene utilizzato in questo modo:

condition ? result_if_true : result_if_false

... se il condition restituisce true, l'espressione restituisce result_if_true, altrimenti restituisce result_if_false.

E ' sintattica zucchero , e in questo caso, può essere sostituito con

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

Nota: Alcune persone si riferiscono a ?: come " l'operatore ternario ", in quanto è l'unico operatore ternario (cioè operatore che prende tre argomenti) nella lingua che stanno utilizzando.

Altri suggerimenti

Questo è un operatore ternario, è fondamentalmente un inline if

x ? y : z

funziona come

if(x) y else z

tranne, invece di affermazioni avete espressioni; in modo da poter utilizzare nel bel mezzo di una dichiarazione più complesso.

E 'utile per la scrittura di codice succinto, ma può essere abusata per creare duramente per mantenere il codice.

Si può semplicemente riscrivere come:

int qempty(){ return(f==r);}

che fa la stessa cosa come detto in altre risposte.

Si chiama condizionale operatore .

È possibile sostituirlo con:

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

E 'l'operatore condizionale.

A? B: c

E 'una scorciatoia per IF / THEN / ELSE.

significa: se a è vero, b, c altro ritorno tornare. In questo caso, se f == R, ritornare 1, altrimenti return 0.

Solo una nota, se mai vedere questo:

a = x ? : y;

E 'un'estensione GNU allo standard (vedi https: //gcc.gnu .org / onlinedocs / gcc / Conditionals.html # condizionali ).

E 'lo stesso di

a = x ? x : y;

Il punto interrogativo è l'operatore condizionale. Il codice significa che se == f r poi 1 viene restituito, in caso contrario, tornare a 0. Il codice potrebbe essere riscritto come

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

che probabilmente non è il modo più pulito per farlo, ma spero che aiuta la vostra comprensione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top