Cosa fa '?' fare in C ++?
-
18-09-2019 - |
Domanda
int qempty()
{
return (f == r ? 1 : 0);
}
In questo frammento di codice, che cosa significa " " significa? Cosa possiamo sostituirlo con?
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.