Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les opérateurs arithmétiques sont utilisés pour 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 des opérateurs arithmétiques sont les opérateurs de décalage de bits, qui agissent au niveau des bits individuels des opérandes et déplacent leurs modèles de bits vers la gauche ou la droite.
Opérations arithmétiques
Vous pouvez ajouter deux valeurs dans une expression avec l’opérateur + ou soustraire l’une de l’autre avec l’opérateur - (Visual Basic), comme l’illustre l’exemple suivant.
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 l’illustre l’exemple suivant.
Dim x As Integer = 65
Dim y As Integer
y = -x
La multiplication et la division utilisent respectivement l’opérateur * et /Operator (Visual Basic), comme l’illustre l’exemple suivant.
Dim y As Double
y = 45 * 55.23
y = 32 / 23
L'exponentiation utilise l'opérateur ^, comme le démontre l'exemple suivant.
Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).
La division entière est effectuée à l’aide de l’opérateur \ (Visual Basic). La division entière retourne le quotient, autrement dit, l’entier qui représente le nombre de fois où le diviseur peut diviser 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 type intégral. L’exemple suivant illustre la division entière.
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
L'arithmétique des modules est effectuée à l'aide de l'opérateur Mod. Cet opérateur retourne le reste après avoir divisé le dividende par le diviseur un nombre intégral de fois. Si les deux diviseurs et dividendes sont des types intégraux, la valeur retournée est intégrale. Si le diviseur et le dividende sont des types à virgule flottante, la valeur retournée est également à virgule flottante. L'exemple ci-dessous 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.
Tentative de division par zéro
La division par zéro a des résultats différents en fonction des types de données impliqués. 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 DivideByZeroException exception.
Dans les divisions à virgule flottante impliquant le Double
type de données, aucune exception n’est levée, et le résultat est le membre de classe représentant NaN, PositiveInfinityou NegativeInfinity, en fonction du dividende. Le tableau suivant récapitule les différents résultats de la tentative de division d’une Double
valeur par zéro.
Type de données de dividende | Type de données de diviseur | Valeur du dividende | Résultat |
---|---|---|---|
Double |
Double |
0 | NaN (pas un nombre mathématiquement défini) |
Double |
Double |
> 0 | PositiveInfinity |
Double |
Double |
< 0 | NegativeInfinity |
Lorsque vous rencontrez une exception DivideByZeroException, vous pouvez utiliser ses membres pour vous aider à la gérer. Par exemple, la Message propriété contient le texte du message pour l’exception. Pour plus d’informations, consultez Try...Catch...Finally, instruction.
Opérations de décalage de bits
Une opération de décalage de bits effectue un décalage arithmétique sur un motif binaire. Le motif est contenu dans l’opérande de gauche, tandis que l’opérande de droite spécifie le nombre de positions à décaler. Vous pouvez déplacer le modèle vers la droite avec l’opérateur>> ou vers la gauche avec l’opérateur<<.
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 pouvoir être élargi à Integer
.
Les décalages arithmétiques ne sont pas circulaires, ce qui signifie que les bits décalés d’une extrémité du résultat ne sont pas réintroduites à l’autre extrémité. Les positions de bits libérées par un décalage sont définies comme suit :
0 pour un décalage arithmétique vers la gauche
0 pour un décalage arithmétique à droite d’un nombre positif
0 pour un décalage arithmétique vers la droite d’un type de données non signé (
Byte
, ,UShort
UInteger
,ULong
)1 pour un décalage arithmétique vers la droite d’un nombre négatif (
SByte
, ,Short
Integer
ouLong
)
L’exemple suivant déplace une Integer
valeur à la fois vers la gauche et 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’exceptions de dépassement.
Opérations au niveau du bit
En plus d’être des opérateurs logiques, Not
, Or
, And
et Xor
effectuent également des opérations au niveau du bit lorsqu’ils sont utilisés sur des valeurs numériques. Pour plus d’informations, consultez « Opérations au niveau du bit » dans les opérateurs logiques et au niveau du bit dans Visual Basic.
Sécurité des types
Les opérandes doivent normalement être du même type. Par exemple, si vous effectuez des ajouts avec une Integer
variable, vous devez l’ajouter à une autre Integer
variable, et vous devez également affecter le résultat à une variable de type Integer
.
Une façon de garantir une bonne pratique de codage sécurisée en termes de types consiste à utiliser l’instruction Option Strict. Si vous définissez Option Strict On
, Visual Basic effectue automatiquement des conversions type-safe. Par exemple, si vous essayez d’ajouter une Integer
variable à une Double
variable et d’affecter la valeur à une Double
variable, l’opération se poursuit normalement, car une Integer
valeur peut être convertie Double
en sans perte de données. Les conversions non sécurisées de type, d’autre part, provoquent une erreur du compilateur avec Option Strict On
. Par exemple, si vous essayez d’ajouter une Integer
variable à une Double
variable et d’affecter la valeur à une Integer
variable, une erreur du compilateur se produit, car une Double
variable ne peut pas être convertie implicitement en type Integer
.
Si vous définissez Option Strict Off
, toutefois, Visual Basic permet aux conversions de réduction implicites de se produire, bien qu’elles puissent entraîner une perte inattendue de données ou de précision. Pour cette raison, nous vous recommandons d’utiliser Option Strict On
lors de l’écriture de code de production. Pour plus d’informations, consultez Widening and Narrowing Conversions.