Visualizzazione dei risultati da 1 a 6 su 6

Visualizzazione discussione

  1. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Perchè gli operatori logici usano la cosiddetta short-circuit logic mentre gli operatori bitwise no.
    L'espressione viene sempre valutata da sinistra verso destra. Se si usano gli operatori logici, la valutazione si ferma non appena il risultato può già essere calcolato. In una AND, ad esempio, se il primo operando è FALSO non ha nessun senso andare a valutare gli altri operandi, in quanto il risultato è già noto a priori: sarà FALSO.
    In una OR, se il primo operando è TRUE, non ha nessun senso andare a valutare gli altri, perchè il risultato è sicuramente TRUE.
    Se, al contrario, i primi operandi non sono sufficienti già a determinare il risultato finale, i rimanenti operandi verranno valutati man mano (procedendo sempre da sinistra verso destra) fino a quando il risultato non sarà certo o fino alla fine degli operandi.

    Esempio per capire meglio:

    codice:
    if (metodo1() && metodo2() && metodo3()) {
       ...
    }

    Se metodo1() restituisce FALSE, l'esecuzione termina perchè il risultato dell'intera espressione può già essere calcolato: sarà FALSE. metodo2() e metodo3() non verranno eseguiti.
    Se metodo1() restituisce TRUE, non è possibile a priori sapere il risultato dell'espressione... quindi si procederà e verrà eseguito metodo2(). Se metodo2() restituisce FALSE il risultato è già determinato e metodo3() non verrà eseguito. Altrimenti verrà eseguito anche metodo3() e il risultato dipenderà solo da lui.

    Questa è la short-circuit logic.

    Questa logica non viene applicata con gli operatori bitwise per i quali tutti gli operandi vengono sempre valutati.

    Di conseguenza, alla riga

    codice:
    bool = (bool2 && method1("2")); //2

    Il risultato dell'espressione in AND può già essere valutato considerando il primo operando "bool2" che vale false... method1() non verrà eseguito.


    Ciao.
    Ultima modifica di LeleFT; 29-08-2017 a 18:31
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.