Qual è l'ordine di precedenza degli operatori in Visual Basic 6.0?
-
09-06-2019 - |
Domanda
Qual è l'ordine di precedenza degli operatori in Visual Basic 6.0 (VB6)?
In particolare per gli operatori logici.
Soluzione
Ordine di precedenza delle operazioni aritmetiche
^
-
(negazione unaria)*
,/
\
Mod
+
,-
(addizione/sottrazione binaria)&
Ordine di precedenza delle operazioni di confronto
=
<>
<
>
<=
>=
Like
,Is
Ordine di precedenza delle operazioni logiche
Not
And
Or
Xor
Eqv
Imp
Fonte: Sams Insegna da solo Visual Basic 6 in 24 ore - Appendice A:Precedenza dell'operatore
Altri suggerimenti
Dipende se sei nel debugger o meno. Veramente. Beh, più o meno.
Le parentesi vengono prima, ovviamente.Quindi aritmatetico (+,-,*,/, ecc.).Quindi confronti (>, <, =, ecc.).Poi gli operatori logici.Il trucco è che l'ordine di esecuzione all'interno di un dato livello di precedenza non è definito.Data la seguente espressione:
If A < B And B < C Then
ti è garantito il <
gli operatori di disuguaglianza verranno entrambi valutati prima di quello logico And
confronto.Ma non è garantito quale confronto di disuguaglianza verrà eseguito per primo.
IIRC, il debugger viene eseguito da sinistra a destra, ma l'applicazione compilata viene eseguita da destra a sinistra. Potrei averli al contrario (è passato molto tempo), ma l'importante è che siano diversi.La precedenza effettiva non cambia, ma l'ordine di esecuzione potrebbe.
Usa le parentesi
MODIFICARE:Questo è il mio consiglio per il nuovo codice!Ma Oscar sta leggendo il codice di qualcun altro, quindi deve capirlo in qualche modo.Suggerisco l'argomento del manuale VB6 Precedenza dell'operatore.Sfortunatamente questo argomento non sembra essere nel Manuale VB6 in linea MSDN, quindi incollerò qui le informazioni sull'operatore logico.Se hai installato la guida VB6 (la libreria MSDN) la avrai sul tuo computer.
Gli operatori logici vengono valutati nel seguente ordine di precedenza:
Not And Or Xor Eqv Imp
L'argomento spiega inoltre la precedenza per gli operatori di confronto e aritmetici.
Suggerirei, una volta individuata la precedenza, di inserirla tra parentesi a meno che non ci sia qualche buon motivo per non modificare il codice.