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
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é enShort
.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 Boolean
Type 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
.