Partager via


Opérateurs arithmétiques en Visual Basic

Mise à jour : novembre 2007

Les opérateurs arithmétiques permettent d'effectuer de nombreuses opérations arithmétiques familières qui impliquent le calcul de valeurs numériques représentées par des littéraux, des variables, d'autres expressions, des appels de fonction et de propriété et des constantes. Également classés avec les opérateurs arithmétiques figurent les opérateurs de décalage de bits, qui agissent au niveau des bits des opérandes et décalent leurs modèles binaires vers la gauche ou vers la droite.

Opérations arithmétiques

Vous pouvez ajouter deux valeurs dans une expression à l'aide de l'+, opérateur (Visual Basic), ou soustraire une valeur d'une autre à l'aide de l'-, opérateur (Visual Basic), comme le montre l'exemple ci-dessous.

Dim x As Integer
x = 67 + 34
x = 32 - 12

La négation utilise également l'-, opérateur (Visual Basic), mais avec un seul opérande, comme le montre l'exemple ci-dessous.

Dim x As Integer = 65
Dim y As Integer
y = -x

La multiplication et la division utilisent l'*, opérateur (Visual Basic) et l'/, opérateur (Visual Basic), respectivement, comme le montre l'exemple ci-dessous.

Dim y As Double
y = 45 * 55.23
y = 32 / 23

L'élévation à la puissance utilise l'^, opérateur (Visual Basic), comme le montre l'exemple ci-dessous.

Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).

La division par un entier s'effectue à l'aide de l'\, opérateur (Visual Basic). Elle retourne le quotient, c'est-à-dire l'entier qui représente le nombre de fois que le diviseur peut être divisé par le dividende sans tenir compte du reste. Le diviseur et le dividende doivent être des types intégraux (SByte, Byte, Short, UShort, Integer, UInteger, Long et ULong) pour cet opérateur. Tous les autres types doivent d'abord être convertis en un type intégral. L'exemple suivant illustre la division d'entier.

Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.

Le modulo arithmétique est effectué par l'Mod, opérateur (Visual Basic). Cet opérateur retourne le reste après que le diviseur est divisé par le dividende un nombre intégral de fois. Si le diviseur et le dividende sont des types intégraux, la valeur retournée est un intégral. Si le diviseur et le dividende sont des types à virgule flottante, la valeur retournée est également à virgule flottante. L'exemple suivant illustre ce comportement.

Dim x As Integer = 100
Dim y As Integer = 6
Dim z As Integer
z = x Mod y
' The preceding statement sets z to 4.
Dim a As Double = 100.3
Dim b As Double = 4.13
Dim c As Double
c = a Mod b
' The preceding statement sets c to 1.18.

Essai de division par zéro

La division par zéro produit divers résultats selon les types de données impliquées. Dans les divisions intégrales (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong), le .NET Framework lève une exception DivideByZeroException. Dans les opérations de division sur le type de données Decimal ou Single, le .NET Framework lève également une exception DivideByZeroException.

Dans les divisions à virgule flottante qui impliquent le type de données Double, aucune exception n'est levée, et le résultat est le membre de la classe qui représente NaN, PositiveInfinity ou NegativeInfinity, selon le dividende. Le tableau suivant résume les divers résultats lors d'une tentative de division d'une valeur Double par zéro.

Type de données d'un dividende

Type de données d'un diviseur

Valeur du dividende

Résultat

Double

Double

0

NaN (pas un nombre défini mathématiquement)

Double

Double

> 0

PositiveInfinity

Double

Double

< 0

NegativeInfinity

Lorsque vous interceptez une exception DivideByZeroException, vous pouvez utiliser ses membres pour faciliter sa gestion. Par exemple, la propriété Message gère le texte du message pour l'exception. Pour plus d'informations, consultez Vue d'ensemble de la gestion structurée des exceptions pour Visual Basic.

Opérations de décalage de bits

Une opération de décalage de bits effectue un décalage arithmétique sur un modèle binaire. Ce modèle figure dans l'opérande de gauche, alors que l'opérande de droite indique le nombre de positions de décalage du modèle. Vous pouvez décaler le modèle vers la droite à l'aide de l'>>, opérateur (Visual Basic) ou vers la gauche à l'aide de l'<< opérateur (Visual Basic).

Le type de données de l'opérande de modèle doit être SByte, Byte, Short, UShort, Integer, UInteger, Long ou ULong. Le type de données de l'opérande de décalage doit être Integer ou doit s'étendre à Integer.

Les décalages arithmétiques ne sont pas circulaires, ce qui signifie que les bits décalés à une extrémité du résultat ne sont pas réintroduits à l'autre extrémité. Les positions binaires libérées par un décalage sont définies comme suit :

  • 0 pour un décalage arithmétique vers la gauche ;

  • 0 pour le décalage arithmétique vers la droite d'un nombre positif ;

  • 0 pour le décalage arithmétique vers la droite d'un type de données non signé (Byte, UShort, UInteger, ULong) ;

  • 1 pour le décalage arithmétique vers la droite d'un nombre négatif (SByte, Short, Integer ou Long).

L'exemple suivant décale une valeur Integer vers la gauche et vers la droite.

Dim lResult, rResult As Integer
Dim pattern As Integer = 12
' The low-order bits of pattern are 0000 1100.
lResult = pattern << 3
' A left shift of 3 bits produces a value of 96.
rResult = pattern >> 2
' A right shift of 2 bits produces value of 3.

Les décalages arithmétiques ne génèrent jamais d'exception de dépassement de capacité.

Opérateurs de bits

Les opérateurs logiques Not, Or, And et Xor effectuent également des opérations de bits arithmétiques lorsqu'ils sont utilisés sur des valeurs numériques. Pour plus d'informations, consultez « Opérations de bits » dans Opérateurs de bits et opérateurs logiques en Visual Basic.

Sécurité de type

Les opérandes doivent généralement être du même type. Par exemple, si vous ajoutez une variable Integer, vous devez l'ajouter à une autre variable Integer, et vous devez également assigner le résultat à une variable de type Integer.

Il est recommandé d'utiliser Option Strict, instruction pour assurer un codage correct de type sécurisé. Si vous définissez Option Strict On, Visual Basic exécute automatiquement des conversions de type sécurisé. Par exemple, si vous essayez d'ajouter une variable Integer à une variable Double et d'assigner la valeur à une variable Double, l'opération continue normalement, parce qu'une valeur Integer peut être convertie en Double sans perte de données. En revanche, les conversions de type non sécurisé provoquent une erreur de compilation avec Option Strict On. Par exemple, si vous tentez d'ajouter une variable Integer à une variable Double et d'assigner la valeur à une variable Integer, une erreur de compilation se produit, car une variable Double ne peut pas être implicitement convertie en type Integer.

Toutefois, si vous définissez Option Strict Off, Visual Basic autorise les conversions restrictives implicites, bien qu'elles puissent entraîner une perte inattendue de données ou de précision. C'est la raison pour laquelle nous vous recommandons d'utiliser Option Strict On lors de l'écriture du code de production. Pour plus d'informations, consultez Conversions étendues et restrictives.

Voir aussi

Concepts

Opérateurs de comparaison en Visual Basic

Opérateurs de concaténation (Visual Basic)

Opérateurs de bits et opérateurs logiques en Visual Basic

Association efficace d'opérateurs

Référence

Opérateurs arithmétiques (Visual Basic)

Opérateurs de décalage de bits