Perchè, come detto, la valutazione si ferma non appena il risultato può essere già garantito. Se il primo termine è false non posso sapere se più avanti ne troverò uno a true. Al contrario, se il primo è già true, non serve che vada avanti a valutare tutti gli altri. O meglio... si ferma al primo true che incontra. Prova questo esempio:Originariamente inviato da manublack
Cioè con il doppio OR (||) la seconda condizione mi viene eseguita lo stesso... Come mai?
Ciao.codice:private static boolean valuta(int i, boolean valore) { System.out.println("Valuto " + i + ": " + valore); return valore; } public static void main(String[] args) { System.out.println("Short-circuit OR ( || ): "); System.out.println(valuta(0, false) || valuta(1, true) || valuta(2, false) || valuta(3, false)); System.out.println("\n\n"); System.out.println("Bitwise OR ( | ): "); System.out.println(valuta(0, false) | valuta(1, true) | valuta(2, false) | valuta(3, false)); }![]()



Rispondi quotando