Partager via


Priorité des opérateurs en Visual Basic

Lorsque plusieurs opérations se produisent dans une expression, chaque partie est évaluée et résolue dans un ordre prédéterminé appelé priorité de l’opérateur.

Règles de précédence

Lorsque les expressions contiennent des opérateurs de plusieurs catégories, elles sont évaluées en fonction des règles suivantes :

  • Les opérateurs arithmétiques et concaténation ont l’ordre de priorité décrit dans la section suivante, et tous ont une priorité supérieure à celle des opérateurs de comparaison, logiques et de bits.

  • Tous les opérateurs de comparaison ont une priorité égale, et tous ont une priorité supérieure aux opérateurs logiques et au niveau du bit, mais la priorité inférieure aux opérateurs arithmétiques et de concaténation.

  • Les opérateurs logiques et au niveau du bit ont l’ordre de priorité décrit dans la section suivante, et tous ont une priorité inférieure aux opérateurs arithmétiques, concaténation et comparaison.

  • Les opérateurs ayant une priorité égale sont évalués de gauche à droite dans l’ordre dans lequel ils apparaissent dans l’expression.

Ordre de précédence

Les opérateurs sont évalués dans l’ordre de priorité suivant :

Await, opérateur

Attendre

Opérateurs arithmétiques et concaténation

Exponentiation (^)

Identité unaire et négation (+, )

Multiplication et division à virgule flottante (*, /)

Division entière (\)

Arithmétique modulaire (Mod)

Addition et soustraction (+, )

Concaténation de chaînes (&)

Décalage de bits arithmétique (<<, >>)

Opérateurs de comparaison

Tous les opérateurs de comparaison (=, , <>, <<=, IsIsNot>=Like>, , ...)IsTypeOf

Opérateurs de bits et opérateurs logiques

Négation (Not)

Conjonction (And, AndAlso)

Disjonction inclusive (Or, OrElse)

Disjonction exclusive (Xor)

Commentaires

L’opérateur = est uniquement l’opérateur de comparaison d’égalité, et non l’opérateur d’affectation.

L’opérateur de concaténation de chaîne (&) n’est pas un opérateur arithmétique, mais il est regroupé avec les opérateurs arithmétiques.

Les Is opérateurs et IsNot les opérateurs sont des opérateurs de comparaison de référence d’objet. Ils ne comparent pas les valeurs de deux objets ; ils vérifient uniquement si deux variables d’objet font référence à la même instance d’objet.

Associativité

Lorsque les opérateurs de priorité égale apparaissent ensemble dans une expression, par exemple la multiplication et la division, le compilateur évalue chaque opération lorsqu’il le rencontre de gauche à droite. L’exemple suivant illustre cela.

Dim n1 As Integer = 96 / 8 / 4
Dim n2 As Integer = (96 / 8) / 4
Dim n3 As Integer = 96 / (8 / 4)

La première expression évalue la division 96 / 8 (ce qui entraîne 12) puis la division 12 / 4, ce qui entraîne trois. Étant donné que le compilateur évalue les opérations de n1 gauche à droite, l’évaluation est la même lorsque cet ordre est explicitement indiqué pour n2. Les deux n1 et n2 ont un résultat de trois. En revanche, n3 a un résultat de 48, car les parenthèses forcent le compilateur à évaluer 8 / 4 en premier.

En raison de ce comportement, les opérateurs sont dits être associatifs dans Visual Basic.

Substitution de la priorité et de l’associativité

Vous pouvez utiliser des parenthèses pour forcer l’évaluation de certaines parties d’une expression avant d’autres. Cela peut remplacer l’ordre de priorité et l’associativité gauche. Visual Basic effectue toujours des opérations placées entre parenthèses avant celles extérieures. Toutefois, entre parenthèses, elle conserve la priorité et l’associativité ordinaires, sauf si vous utilisez des parenthèses entre parenthèses. L’exemple suivant illustre cela.

Dim a, b, c, d, e, f, g As Double
a = 8.0
b = 3.0
c = 4.0
d = 2.0
e = 1.0
f = a - b + c / d * e
' The preceding line sets f to 7.0. Because of natural operator
' precedence and associativity, it is exactly equivalent to the
' following line.
f = (a - b) + ((c / d) * e)
' The following line overrides the natural operator precedence
' and left associativity.
g = (a - (b + c)) / (d * e)
' The preceding line sets g to 0.5.

Voir aussi