Per gli operatori && e || il comportamento è "short-circuit" perché se il primo operando è tale per cui il risultato complessivo è già deducibile, il secondo operando non viene nemmeno valutato.
if (metodo1() == 3 || metodo2() == 7)
Se metodo1() == 3 è true, il risultato finale della OR è sicuramente true. Quindi metodo2() == 7 non viene valutato (il metodo non viene proprio invocato!).
Mentre gli operatori & e | usati come operatori "logici" (possono essere bitwise con valori interi) non hanno il comportamento "short-circuit", ovvero entrambi gli operandi vengono sempre valutati.


Rispondi quotando