  |
|| (or) |
  |
comportamento short - circuit |
  |
valore determinato se il primo operando è true |
  |
in tal caso non viene valutato il secondo |
la caratteristica a corto circuito è propria anche di un altro operatore booleano, ||, il quale ha però un comportamento diverso. Infatti se dico che voglio dare un osso a Socrate se Socrate abbaia o Socrate scodinzola, è sufficiente che una sola del due condizioni si è verificata perché io voglia fare quello che ho detto. Quindi se Socrate sta abbaiando, vado subito a dargli un osso senza controllare che stia pure scodinzolando. L'operatore a corto circuito || (notare che anche in questo caso è raddoppiato), se il primo operando è vero non valuta il secondo. Se il primo è falso invece utilizza il secondo operando per calcolare valore finale.
n < table.min() || n > table.max()
  |
si risparmia un calcolo (pesante) del max |
Il listato mostra un caso in cui questo è utile: supponiamo infatti che si voglia verificare se un dato numero è minore del minimo o maggio del massimo di una tabella. Per riuscirci dobbiamo effettuare appunto il calcolo del minimo o del massimo. Supponendo che la tabella sia molto grande, che può volere molto tempo per riuscir ottenere il valore corretto. Ora se n è minore del minimo, sicuramente non può essere maggiore del massimo. Quindi, una volta che ho verificato che è vera la prima condizione, non ha bisogno di verificare la seconda. In questo modo si risparmia in alcuni casi un pesante calcolo del massimo (e quindi l'esecuzione ne giova, in quanto ci mette la metà).
|