16
Programmazione / Re: AND condizionale che valuta secondo operando solo se necessario
« il: 05 Aprile 2015, 07:04:58 »in Gambas la valutazione di corto circuito per OR e AND, con il vincolo (limite che in .NET non sussiste) che non possono essere mescolati (= solo sequenze di OR oppure solo sequenze di AND) e la sequenza deve stare su un'unica riga.
...
Scusa ma anche qui non mi è chiaro cosa intendi dire.
Ma in Gambas puoi mischiare AND e OR non puoi mischiare And If e Or If ma quasi mi pare un bene anzi guarda questo codice il primo è ingannevole uno potrebbe pensare che passi a Or e invece come è giusto che sia esce avendo un And If alla sua destra.Codice: gambas [Seleziona]Dim c, i As Integer
c = 10
i = 10
If c = 11 And If i = 1 \ 0 Or c = 10 And i = 10 Then
Print "Niente"
Endif
If c = 11 And i = 100 Or c = 10 And i = 10 Then
Print "Seconda valutazione (dopo OR)"
Endif
Dunque, considerando la prima espressione booleana da testare c'è da dire che 1) l'operatore terminale è OR per cui l'interprete dovrà eseguire le due sottoespressioni (verosimilmente partendo da sinistra) ossia gli operandi dell'OR 2) essendo un OR tradizionale, la valutazione *deve* essere effettuata su ambedue e 3) la logica di cortocircuito dell'And If agirà soltanto sulla prima delle due (fermandosi alla valutazione di c = 11 in FALSE) 4) quando verrà poi valutata la seconda (TRUE) si rientrerà all'OR terminale per la valutazione finale: FALSE OR TRUE = TRUE. (Praticamente in VB.NET io uso solo AndAlso e OrElse.)