Combinazione efficace di operatori (Visual Basic)
Le espressioni complesse possono contenere molti operatori diversi. Ciò è illustrato nell'esempio seguente.
x = (45 * (y + z)) ^ (2 / 85) * 5 + z
La creazione di espressioni complesse, ad esempio quella nell'esempio precedente, richiede una conoscenza approfondita delle regole di precedenza tra gli operatori. Per altre informazioni, vedere Precedenza tra gli operatori in Visual Basic.
Espressioni tra parentesi
Spesso si vuole che le operazioni procedano in un ordine diverso da quello determinato dalla precedenza tra gli operatori. Si consideri l'esempio seguente.
x = z * y + 4
L'esempio precedente moltiplica z
per y
, quindi somma il risultato a 4
. Se tuttavia si vuole sommare y
e 4
prima di moltiplicare il risultato per z
, è possibile eseguire l'override della precedenza normale tra gli operatori usando le parentesi. Racchiudendo un'espressione tra parentesi, si impone che tale espressione venga valutata per prima, indipendentemente dalla precedenza tra gli operatori. Per imporre all'esempio precedente di eseguire prima di tutto l'addizione, è possibile riscriverlo come mostrato nell'esempio seguente.
x = z * (y + 4)
Nell'esempio precedente vengono sommati y
e 4
, quindi moltiplica tale somma per z
.
Espressioni tra parentesi annidate
È possibile annidare le espressioni in più livelli di parentesi per eseguire un ulteriore override della precedenza. Le espressioni annidate in modo più profondo tra parentesi vengono valutate per prime, seguite dalle successive annidate più profondamente e così via fino a quelle meno annidato e infine alle espressioni esterne alle parentesi. Ciò è illustrato nell'esempio seguente.
x = (z * 4) ^ (y * (z + 2))
Nell'esempio precedente viene valutata per prima l'espressione z + 2
, seguita dalle altre espressioni tra parentesi. L'elevamento a potenza, che in genere ha una precedenza maggiore rispetto all'addizione o alla moltiplicazione, viene valutato per ultimo in questo esempio perché le altre espressioni sono racchiuse tra parentesi.