Nel frammento sopra, cosa significa "?"? Con cosa possiamo sostituirlo?Cosa significa "?" fare in C++?
risposta
Questo è comunemente indicato come il conditional operator, e quando usato:
condition ? result_if_true : result_if_false
... se il condition
viene valutato come true
, l'espressione restituisce result_if_true
, altrimenti restituisce result_if_false
.
È syntactic sugar, 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", perché è l'unico ternario operatore (cioè un operatore che accetta tre argomenti) nella lingua che sta utilizzando.
Penso che implicitamente intendano "l'operatore ternario (C++)". Quali altri operatori ternari esistono in C++? – sblom
Questo è l'unico in C++ – Colin
per chiunque abbia bisogno di un amore condizionale: http://www.artima.com/cppsource/foreach.html. eric niebler spiega come il suo boost.foreach utilizza l'operatore condizionale. –
È l'operatore condizionale.
a? b: c
È una scorciatoia per IF/THEN/ELSE.
significa: se a è vero, restituisce b, altrimenti restituisce c. In questo caso, se f == R, ritorno 1, ritorno altrimenti 0.
Si tratta di un operatore ternario, è fondamentalmente un inline if
x ? y : z
opere come
if(x) y else z
eccezione invece di dichiarazioni hai espressioni; così puoi usarlo nel mezzo di una dichiarazione più complessa.
È utile per scrivere codice succinto, ma può essere utilizzato in modo eccessivo per creare codice difficile da gestire.
Devi stare attento qui; non funziona esattamente come un'istruzione if. Mentre tu * puoi * dire qualcosa come int 'a = x? y: z; 'tu * non puoi * dire' int a = if (x) y else z; ' –
vale la pena sapere che esiste un punto di sequenza nel '?'. Ciò significa che quanto segue è valido: ++ x? x: y; –
@Daniel, questo è quello che intendevo con espressioni piuttosto che dichiarazioni. Probabilmente non ero abbastanza esplicito riguardo alla differenza, quindi grazie per l'aggiunta di alcuni chiarimenti. – Richard
Si chiama conditional operator.
si può sostituire con:
int qempty(){
if (f == r) return 1;
else return 0;
}
Il punto interrogativo è l'operatore condizionale. Il codice significa che se == f r poi 1 viene restituito, in caso contrario, restituire 0. Il codice potrebbe essere riscritta 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.
Si può semplicemente riscrivere come:
int qempty(){ return(f==r);}
che fa la stessa cosa come detto in altre risposte.
eseguirebbe la conversione implicita da boolean a int – mmcrae
Solo una nota, se mai vedere questo:
a = x ? : y;
Si tratta di un'estensione GNU allo standard (vedi https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals).
E 'lo stesso di
a = x ? x : y;
in CLang (almeno le versioni più recenti) questa estensione è anche disponibile. È disponibile anche con flag C++ 11 disattivato in un progetto qmake. Quindi un'espressione come int 'x = 1 + 1? : 0 '; restituisce correttamente '2', nel mio compilatore e questo non si è lamentato di nulla. –
- 1. cosa significa "@" significa in C#
- 2. Cosa significa/*! */Significa in C#?
- 3. Cosa significa: :: significa in C++?
- 4. Cosa significa "??" significa in C#?
- 5. Cosa significa [,] in C#?
- 6. Cosa significa :: * in C++?
- 7. cosa significa ** in C
- 8. Cosa significa "&" in C++?
- 9. Che cosa significa questo? operatore in C++ fare?
- 10. Cosa significa `T {}` fare Scala
- 11. Cosa significa "return false;" fare?
- 12. Cosa significa classmethod fare in questo codice?
- 13. Cosa significa '__getnewargs__' fare in questo codice
- 14. Cosa significa << fare in Python?
- 15. Che cosa significa "[questo]" significa in C++
- 16. Che cosa significa?. significa in C#?
- 17. Cosa significa "classe:" in C++?
- 18. Cosa significa "() =>" in C#?
- 19. Cosa significa (void **) in C?
- 20. Cosa significa 0u in C#?
- 21. Shellcode in C - Cosa significa?
- 22. Cosa significa the :: in C++?
- 23. Cosa significa -> in C++?
- 24. Cosa significa "^" in Objective-C
- 25. Cosa significa cmd/C?
- 26. Cosa significa `__import __ ('pkg_resources'). Declare_namespace (__ nome __)` fare?
- 27. Che cosa significa "var app = app || {};" fare?
- 28. Che cosa significa "git checkout -." fare?
- 29. Che cosa significa il comando "nodo". fare?
- 30. Cosa significa = ~ significa in Perl
In questo particolare caso, naturalmente, si può semplicemente sostituirlo con ritorno f == r; – Eclipse
Nei commenti, è usato per fare una domanda. –
@Eclipse: non mi baserei su una conversione implicita bool-> int se posso evitarlo. –