RootkitNeo |
|
| CITAZIONE (Nessuno @ 27/2/2014, 18:40) Ciao Come da titolo vorrei dei chiarimenti su OR e AND di corto circuito, il libro riporta questo esempio: if (denom != 0 && num / denom > 10) e dopo dice: "poiché si utilizza la forma di corto circuito di AND, non esiste il rischio di causare un'eccezione di runtime quando denom è zero. Se si scrivesse la stessa riga di codice con la versione singola di AND , verrebbero valutati entrambi gli operandi e quando denom è zero verrebbe generata un'eccezione di runtime." e di OR di corto circuito non fa nessun esempio. potreste spiegarmi meglio come funzionano? AND e OR logici ho capito come funzionano(come i bit solo che invece di 1 e 0 si usa TRUE o FALSE) ma AND e OR di corto circuito non riesco proprio a capirli Grazie in anticipo In pratica si tratta sempre di AND ed OR. E' abbastanza semplice concettualmente: applicando gli operatori logici (& e |) a valori boolean ottieni true o false e l'espressione viene valutata tenendo conto di entrambe le due condizioni, in pratica nel caso mostrato sopra viene calcolata sia il "denom!=0" sia la divisione, e questo genera un eccezione (in quanto c'è una divisione per 0). Se usi invece && viene valutata solo l'espressione di sinistra, e se questa non passa il controllo non viene valutata l'altra, quindi nel tuo caso li sopra non hai alcuna eccezione. Il 99% delle volte troverai && e ||. Immagina di dover controllare due password ed entrambe devono essere vere, farai: CODICE if(pwd1 == 123456789 && pwd1==987654321) { Grazie al doppio &&, se la prima (pwd1) è false, l'altra non viene nemmeno valutata (visto che devono essere true entrambe, se già la prima è falsa, controllare l'altra non serve nemmeno).
|
| |