Questo è un problema molto banale: Esistono quattro funzioni booleane: a(), b(), c() e d(). Voglio continuare a chiamarli in ordine fino a quando il primo restituisce true
. invece di fare la tradizionaleSostituzione di if concatenati con operazioni in cortocircuito
if(!a()) {
if(!b()) {
if(!c()) {
d();
}
}
}
o
if(!a() && !b() && !c()) d();
ho pensato di scrivere l'espressione come una valutazione in corto circuito.
(a() || b() || c() || d());
Ma non ho mai visto questo test eseguito in questo modo in un codice C/C++. C'è qualche problema con questo approccio che mi manca?
Grazie.
Sono in grado di vedere * cinque * funzioni booleane. –
@chris il o non cambia il significato: d() viene eseguito solo se tutte le altre funzioni sono false. – Loghorn
Vorrei consigliarlo contro una prospettiva di manutenzione. Potrebbe non essere immediatamente ovvio alle persone che cosa fa il codice quando vedono la versione cortocircuitata (se è una preoccupazione per te). Il fatto che dovessi chiedere del comportamento di SO dovrebbe essere un suggerimento su cosa accadrà quando altre persone leggeranno il tuo codice. – Michael