Types de données des résultats d'opérateur (Visual Basic)

Visual Basic détermine le type de données du résultat d’une opération en fonction des types de données des opérandes. Dans certains cas, il peut s’agir d’un type de données dont la plage est supérieure à celle de l’un des opérandes.

plages de types de données

Les plages des types de données pertinents, dans l’ordre du plus petit au plus grand, sont les suivantes :

  • Boolean : deux valeurs possibles

  • SByte, Byte : 256 valeurs intégrales 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+19) valeurs intégrales possibles

  • Decimal : 1,5...E+29 valeurs intégrales possibles, plage maximale 7,9...E+28 (valeur absolue)

  • Single : plage maximale 3,4...E+38 (valeur absolue)

  • Double : plage maximale 1,7...E+308 (valeur absolue)

Pour plus d’informations sur les types de données, consultez Types de données.

Si un opérande prend la valeur Nothing, les opérateurs arithmétiques Visual Basic le traitent comme zéro.

Arithmétique décimale

Notez que le type de données Decimal n’est ni à virgule flottante ni entier.

Si l’un des opérandes d’une opération +, , *, / ou Mod est Decimal et que l’autre n’est pas Single ou Double, Visual Basic étend l’autre opérande à Decimal. Il effectue l’opération dans Decimal, et le type de données résultat est Decimal.

Arithmétique à virgule flottante

Visual Basic effectue la plupart des opérations arithmétiques à virgule flottante en Double, qui est le type de données le plus efficace pour de telles 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 chaque opérande si nécessaire au type de données approprié avant l’opération, et le résultat a ce 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 chaque opérande si nécessaire au type de données approprié avant l’opération, et le résultat a ce type de données.

Le tableau suivant indique le résultat de l’opérateur /. Notez que ce tableau est symétrique ; pour une combinaison donnée de types de données d’opérandes, 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 entier
Decimal Decimal Unique Double Decimal
Single Unique Unique Double Unique
Double Double Double Double Double
Tout type entier Decimal Unique Double Double

L’opérateur ^ est défini uniquement pour le type de données Double. Visual Basic étend chaque opérande jusqu’à Double en fonction des besoins de l’opération, et le type de données de résultat est toujours Double.

Arithmétique des entiers

Le type de données du résultat d’une opération d’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 du résultat :

  • Si les deux opérandes d’un opérateur binaire ont le même type de données, le résultat a ce type de données. Boolean est une exception, ce type est forcé en Short.

  • Si un opérande non signé participe avec un opérande signé, le résultat a un type signé avec une plage au moins aussi grande que l’un des opérandes.

  • Sinon, le résultat a généralement le plus grand des deux types de données d’opérande.

Notez que le type de données du résultat peut ne pas être le même que l’un ou l’autre des types de données d’opérande.

Notes

Le type de données du 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 du résultat.

Opérateurs unaires + et –

Le tableau suivant indique les types de données du résultat pour les deux opérateurs unaires, + et .

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Unaire + Court SByte Byte Court UShort Integer UInteger Long ULong
Unaire Court SByte Court Court Integer Integer Long Long Decimal

Opérateurs << et >>

Le tableau suivant indique les types de données du résultat pour les deux opérateurs de déplacement de bits, << et >>. Visual Basic traite chaque opérateur de déplacement de bits comme un opérateur unaire sur son opérande gauche (modèle de bits à déplacer).

Boolean SByte Byte Short UShort Integer UInteger Long ULong
<<, >> Court SByte Byte Court UShort Integer UInteger Long ULong

Si l’opérande de gauche est Decimal, Single, Double ou String, Visual Basic tente de le convertir en Long avant l’opération et le type de données du résultat est Long. L’opérande droit (nombre de positions de bits à déplacer) doit être Integer ou un type qui s’étend à Integer.

Opérateurs binaires +, –, * et Mod

Le tableau suivant montre les types de données du résultat pour les opérateurs binaires + et les opérateurs * et Mod. Notez que ce tableau est symétrique ; pour une combinaison donnée de types de données d’opérandes, 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 Court SByte Court Court Integer Integer Long Long Decimal
SByte SByte SByte Court Court Integer Integer Long Long Decimal
Byte Court Court Byte Court UShort Integer UInteger Long ULong
Short Court short short Court 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 indique le type de données du résultat pour l’opérateur \. Notez que ce tableau est symétrique ; pour une combinaison donnée de types de données d’opérandes, 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 Court SByte Court Court Integer Integer Long Long Long
SByte SByte SByte Court Court Integer Integer Long Long Long
Byte Court Court Byte Court UShort Integer UInteger Long ULong
Short Court short short Court 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 tente de le convertir en Long avant l’opération et le type de données du résultat est Long.

Comparaisons relationnelle et de bits

Le type de données du résultat d’une opération relationnelle (=, <>, <, >, <=, >=) est toujours le BooleanType de données Boolean. 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 du 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 Visual Basic convertit chaque opérande en tant que Boolean avant d’effectuer l’opération, si nécessaire.

Opérateurs =, <>, <, >, <= et >=

Si les deux opérandes sont Boolean, Visual Basic considère True comme inférieur à False. Si un type numérique est comparé à une String, Visual Basic tente de convertir la String en Double avant l’opération. Un opérande Char ou Date ne peut être comparé qu’à un autre opérande du même type de données. Le type de données du résultat est toujours Boolean.

Opérateur de bits Not

Le tableau suivant indique le type de données du résultat pour l’opérateur de bits Not.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Not Boolean SByte Byte Court UShort Integer UInteger Long ULong

Si l’opérande est Decimal, Single, Double ou String, Visual Basic tente de le convertir en Long avant l’opération et le type de données du résultat est Long.

Opérateurs And, Or et Xor de bits

Le tableau suivant indique le type de données du résultat pour les opérateurs de bits And, Or et Xor. Notez que ce tableau est symétrique ; pour une combinaison donnée de types de données d’opérandes, 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 Court Court Integer Integer Long Long Long
SByte SByte SByte Court Court Integer Integer Long Long Long
Byte Court Court Byte Court UShort Integer UInteger Long ULong
Short Court short short Court 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 tente de le convertir en Long avant l’opération et le type de données du résultat est le même que si cet opérande avait déjà été Long.

Opérateurs divers

L’opérateur & est défini uniquement pour la concaténation des opérandes String. Visual Basic convertit chaque opérande en String avant l’opération, si nécessaire, et le type de données du résultat est toujours String. Pour les besoins de l’opérateur & , toutes les conversions vers String sont considérées comme extensives, même si Option Strict est On.

Les opérateurs Is et IsNot nécessitent que les deux opérandes soient d’un type de référence. L’expression TypeOf...Is nécessite que le premier opérande soit de type référence et que le deuxième opérande soit le nom d’un type de données. Dans tous ces cas, le type de données du résultat est Boolean.

L’opérateur Like est défini uniquement pour les critères spéciaux des opérandes String. Visual Basic tente de convertir chaque opérande en String avant l’opération, si nécessaire. Le type de données du résultat est toujours Boolean.

Voir aussi