Types de données des résultats d'opérateur
Mise à jour : novembre 2007
Visual Basic détermine le type de données de résultat d'une opération à partir des types de données des opérandes. Dans certains cas, il peut s'agir d'un type de données disposant d'une plage plus grande que celle d'un opérande.
Plages des types de données
Les plages des types de données pertinents, dans l'ordre croissant de taille, sont les suivantes :
Boolean — deux valeurs possibles
Short, UShort — 65 536 (6,5... E+4) valeurs intégrales possibles
Integer, UInteger — 4 294 967 296 (4,2... E+9) valeurs intégrales possibles
Long, ULong — 18 446 744 073 709 551 615 (1,8... E+9) valeurs intégrales possibles
Decimal — 1,5... E+29 valeurs intégrales possibles, la plage maximale est 7,9... E+28 (valeur absolue)
Single — la plage maximale est 3,4 ... E+38 (valeur absolue)
Double — la plage maximale est 1,7 ... E+308 (valeur absolue)
Pour plus d'informations sur les types de données Visual Basic, consultez Liste des types de données (Visual Basic).
Si un opérande prend la valeur Nothing, les opérateurs arithmétiques Visual Basic la considèrent comme étant égale à zéro.
Arithmétique décimale
Notez que le type de données Decimal n'est ni à virgule flottante, ni entier.
Si un opérande d'une opération +, –, *, /, ou Mod est de type Decimal et que l'autre n'est pas Single ou Double, Visual Basic étend l'autre opérande à Decimal. Il effectue l'opération en Decimal et le type de données de résultat est Decimal.
Arithmétique à virgule flottante
Visual Basic exécute la plupart des opérations arithmétiques à virgule flottante en Double, qui est le type de données le plus efficace pour ce genre d'opérations. Toutefois, si un opérande est Single et que l'autre n'est pas Double, Visual Basic effectue l'opération en Single. Il étend si nécessaire chaque opérande au type de données approprié avant l'opération, et le résultat est du même type de données.
Opérateurs / et ^
L'opérateur / est défini uniquement pour les types de données Decimal, Single et Double. Visual Basic étend si nécessaire chaque opérande au type de données approprié avant l'opération, et le résultat est du même type de données.
Le tableau suivant présente les types de données de résultat pour l'opérateur /. Notez que ce tableau est symétrique ; pour une combinaison de types de données d'opérande spécifiée, le type de données de résultat est le même, quel que soit l'ordre des opérandes.
Decimal |
Single |
Double |
Tout type d'entier |
|
Decimal |
Decimal |
Single |
Double |
Double |
Single |
Single |
Single |
Double |
Double |
Double |
Double |
Double |
Double |
Double |
Tout type d'entier |
Double |
Double |
Double |
Double |
L'opérateur ^ est défini uniquement pour le type de données Double. Visual Basic étend si nécessaire chaque opérande à Double avant l'opération, et le type de données de résultat est toujours Double.
Arithmétique sur les entiers
Le type de données de résultat d'une opération sur des entiers dépend des types de données des opérandes. En général, Visual Basic utilise les stratégies suivantes pour déterminer le type de données de résultat :
Si les deux opérandes d'un opérateur binaire ont le même type de données, le résultat sera également de ce type de données. Boolean fait exception ; il est forcé en Short.
Si un opérande non signé est associé à un opérande signé, le résultat est d'un type signé assorti d'une plage au moins aussi grande que l'un des opérandes.
Sinon, le résultat prend généralement le plus grand des deux types de données d'opérande.
Notez que le type de données de résultat peut ne pas être le même que celui des opérandes.
Remarque : |
---|
En effet, le type de données de résultat n'est pas toujours assez grand pour contenir toutes les valeurs possibles résultant de l'opération. Une exception OverflowException peut se produire si la valeur est trop grande pour le type de données de résultat. |
Opérateurs unaires + et -
Le tableau suivant présente les types de données de résultat pour les deux opérateurs unaires, + et –.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
+ unaire |
Short |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
– unaire |
Short |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
Opérateurs << et >>
Le tableau suivant présente les types de données de résultat pour les deux opérateurs de décalage de bits, << et >>. Visual Basic traite chaque opérateur de décalage de bits comme un opérateur unaire sur son opérande gauche (modèle binaire à décaler).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
<<, >> |
Short |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Si l'opérande gauche est de type Decimal, Single, Double ou String, Visual Basic essaie de le convertir en Long avant l'opération, et le type de données de résultat est Long. L'opérande droit (le nombre de positions binaires à décaler) doit être Integer ou d'un type qui s'étend à Integer.
Opérateurs binaires + et –, et opérateurs * et Mod
Le tableau suivant présente les types de données de résultat pour les opérateurs binaires + et – et les opérateurs * et Mod. Notez que ce tableau est symétrique ; pour une combinaison de types de données d'opérande spécifiée, le type de données de résultat est le même, quel que soit l'ordre des opérandes.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Boolean |
Short |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
SByte |
SByte |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
Byte |
Short |
Short |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Short |
Short |
Short |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
UShort |
Integer |
Integer |
UShort |
Integer |
UShort |
Integer |
UInteger |
Long |
ULong |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Long |
Long |
Decimal |
UInteger |
Long |
Long |
UInteger |
Long |
UInteger |
Long |
UInteger |
Long |
ULong |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Decimal |
ULong |
Decimal |
Decimal |
ULong |
Decimal |
ULong |
Decimal |
ULong |
Decimal |
ULong |
\, opérateur
Le tableau suivant présente les types de données de résultat pour l'opérateur \. Notez que ce tableau est symétrique ; pour une combinaison de types de données d'opérande spécifiée, le type de données de résultat est le même, quel que soit l'ordre des opérandes.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Boolean |
Short |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
SByte |
SByte |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
Byte |
Short |
Short |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Short |
Short |
Short |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
UShort |
Integer |
Integer |
UShort |
Integer |
UShort |
Integer |
UInteger |
Long |
ULong |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Long |
Long |
Long |
UInteger |
Long |
Long |
UInteger |
Long |
UInteger |
Long |
UInteger |
Long |
ULong |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
ULong |
Long |
Long |
ULong |
Long |
ULong |
Long |
ULong |
Long |
ULong |
Si l'un des opérandes de l'opérateur \ est Decimal, Single ou Double, Visual Basic essaie de le convertir en Long avant l'opération, et le type de données de résultat est Long.
Comparaison de bits et comparaison relationnelle
Le type de données de résultat d'une opération relationnelle (=, <>, <, >, <=, >=) est toujours BooleanBoolean, type de données (Visual Basic). Il en va de même pour les opérations logiques (And, AndAlso, Not, Or, OrElse, Xor) sur les opérandes Boolean.
Le type de données de résultat d'une opération logique de bits dépend des types de données des opérandes. Notez que AndAlso et OrElse sont définis uniquement pour Boolean et que Visual Basic convertit si nécessaire chaque opérande en Boolean avant d'effectuer l'opération.
Opérateurs =, <>, <, >, <= et >=
Si les deux opérandes sont Boolean, Visual Basic considère que la valeur True est inférieure à False. Si un type numérique est comparé à un String, Visual Basic essaie de convertir le String en Double avant l'opération. Une comparaison avec un opérande de type Char ou Date ne peut être établie qu'avec un autre opérande du même type de données. Le type de données de résultat est toujours Boolean.
Opérateur de bits NOT
Le tableau suivant présente les types de données de résultat pour l'opérateur de bits Not.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Not |
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Si l'opérande est de type Decimal, Single, Double ou String, Visual Basic essaie de le convertir en Long avant l'opération, et le type de données de résultat est Long.
Opérateurs de bits AND, OR et XOR
Le tableau suivant présente les types de données de résultat pour les opérateurs de bits And, Or et Xor. Notez que ce tableau est symétrique ; pour une combinaison de types de données d'opérande spécifiée, le type de données de résultat est le même, quel que soit l'ordre des opérandes.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Boolean |
Boolean |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
SByte |
SByte |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
Byte |
Short |
Short |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Short |
Short |
Short |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
UShort |
Integer |
Integer |
UShort |
Integer |
UShort |
Integer |
UInteger |
Long |
ULong |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Long |
Long |
Long |
UInteger |
Long |
Long |
UInteger |
Long |
UInteger |
Long |
UInteger |
Long |
ULong |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
ULong |
Long |
Long |
ULong |
Long |
ULong |
Long |
ULong |
Long |
ULong |
Si un opérande est Decimal, Single, Double ou String, Visual Basic essaie de le convertir en Long avant l'opération, et le type de données de résultat est le même que si cet opérande était déjà de type Long.
Opérateurs divers
L'opérateur & est défini uniquement pour la concaténation d'opérandes String. Visual Basic convertit chaque opérande si nécessaire en String avant l'opération, et le type de données de résultat est toujours String. Pour les besoins de l'opérateur &, toutes les conversions en String sont considérées comme étant étendues, même si Option Strict est On.
Les opérateurs Is et IsNot exigent que les deux opérandes soient d'un type référence. L'expression TypeOf...Is exige que le premier opérande soit d'un type référence et que le second opérande représente le nom d'un type de données. Dans tous ces cas, le type de données de résultat est Boolean.
L'opérateur Like est défini uniquement pour les critères spéciaux d'opérandes String. Visual Basic essaie si nécessaire de convertir chaque opérande en String avant l'opération. Le type de données de résultat est toujours Boolean.
Voir aussi
Concepts
Opérateurs et expressions en Visual Basic
Opérateurs arithmétiques en Visual Basic
Opérateurs de comparaison en Visual Basic
Référence
Liste des types de données (Visual Basic)
Priorité des opérateurs en Visual Basic
Opérateurs répertoriés par fonctionnalité
Opérateurs arithmétiques (Visual Basic)
Opérateurs de comparaison (Visual Basic)