Gegevenstypen van operatorresultaten (Visual Basic)
Visual Basic bepaalt het resultaatgegevenstype van een bewerking op basis van de gegevenstypen van de operanden. In sommige gevallen kan dit een gegevenstype zijn met een groter bereik dan dat van een van beide operanden.
Gegevenstypebereiken
De bereiken van de relevante gegevenstypen, in volgorde van klein naar groot, zijn als volgt:
Booleaanse waarde : twee mogelijke waarden
Kort, UShort — 65.536 (6,5...E+4) mogelijke integrale waarden
Geheel getal, UInteger — 4.294.967.296 (4,2...E+9) mogelijke integrale waarden
Long, ULong — 18.446.744.073.709.551.615 (1,8...E+19) mogelijke integrale waarden
Decimaal — 1,5...E+29 mogelijke integrale waarden, maximumbereik 7,9...E+28 (absolute waarde)
Enkel — maximumbereik 3,4...E+38 (absolute waarde)
Dubbel — maximumbereik 1,7...E+308 (absolute waarde)
Zie Gegevenstypen voor meer informatie over Visual Basic-gegevenstypen.
Als een operand niets evalueert, behandelen de rekenkundige operatoren van Visual Basic deze als nul.
Rekenkundige decimalen
Het gegevenstype Decimaal is geen drijvende komma of geheel getal.
Als een operand van een +
, –
, *
of /
Mod
bewerking is Decimal
en de andere niet Single
is ofDouble
, verbreedt Visual Basic de andere operand naar Decimal
. De bewerking Decimal
wordt uitgevoerd en het resultaatgegevenstype is Decimal
.
Rekenkundige drijvende komma
Visual Basic voert de meeste rekenkundige drijvende komma uit in Double, het meest efficiënte gegevenstype voor dergelijke bewerkingen. Als de ene operand echter Single is en de andere nietDouble
, voert Visual Basic de bewerking uit in Single
. Het verbreedt elke operand indien nodig voor het juiste gegevenstype voor de bewerking en het resultaat heeft dat gegevenstype.
/ en ^ Operators
De /
operator is alleen gedefinieerd voor de gegevenstypen Decimal, Single en Double . Visual Basic verbreedt elke operand zo nodig voor het juiste gegevenstype vóór de bewerking en het resultaat heeft dat gegevenstype.
In de volgende tabel ziet u de resultaatgegevenstypen voor de /
operator. Houd er rekening mee dat deze tabel symmetrisch is; voor een bepaalde combinatie van operand-gegevenstypen is het resultaatgegevenstype hetzelfde, ongeacht de volgorde van de operanden.
Decimal |
Single |
Double |
Elk type geheel getal | |
---|---|---|---|---|
Decimal |
Decimal | Eén | Dubbel | Decimal |
Single |
Eén | Eén | Dubbel | Eén |
Double |
Dubbel | Dubbel | Dubbel | Dubbel |
Elk type geheel getal | Decimal | Eén | Dubbel | Dubbel |
De ^
operator is alleen gedefinieerd voor het Double
gegevenstype. Visual Basic verbreedt elke operand zo nodig vóór Double
de bewerking en het resultaatgegevenstype is altijd Double
.
Rekenkundige getallen voor gehele getallen
Het resultaatgegevenstype van een geheel getal is afhankelijk van de gegevenstypen van de operanden. In het algemeen gebruikt Visual Basic de volgende beleidsregels voor het bepalen van het resultaatgegevenstype:
Als beide operanden van een binaire operator hetzelfde gegevenstype hebben, heeft het resultaat dat gegevenstype. Een uitzondering is
Boolean
, dat wordt gedwongen .Short
Als een niet-ondertekende operand deelneemt aan een ondertekende operand, heeft het resultaat een ondertekend type met ten minste een zo groot bereik als een van beide operanden.
Anders heeft het resultaat meestal de grotere van de twee operand-gegevenstypen.
Houd er rekening mee dat het resultaatgegevenstype mogelijk niet hetzelfde is als een van beide operandengegevenstypen.
Notitie
Het gegevenstype resultaat is niet altijd groot genoeg om alle mogelijke waarden te bewaren die het gevolg zijn van de bewerking. Er kan een OverflowException uitzondering optreden als de waarde te groot is voor het gegevenstype resultaat.
Unary + and – Operators
In de volgende tabel ziet u de resultaatgegevenstypen voor de twee unaire operatoren en +
–
.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Unaire + |
Kort | SByte | Byte | Kort | UShort | Geheel getal | UInteger | Lang | ULong |
Unaire – |
Kort | SByte | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Decimal |
<< en >> operators
In de volgende tabel ziet u de resultaatgegevenstypen voor de twee bits shift-operators en <<
>>
. Visual Basic behandelt elke bit-shift-operator als een unaire operator in de linkeroperand (het bitpatroon dat moet worden verschoven).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
<< , >> |
Kort | SByte | Byte | Kort | UShort | Geheel getal | UInteger | Lang | ULong |
Als de linkeroperand is Decimal
, Single
, Double
of String
, probeert Visual Basic deze te converteren naar Long
vóór de bewerking en is het resultaatgegevenstype Long
. De rechteroperand (het aantal bitposities dat moet worden verschoven) moet zijn Integer
of een type dat breder wordt.Integer
Binaire operatoren +, –, *en Mod
In de volgende tabel ziet u de resultaatgegevenstypen voor de binaire +
–
en operatoren en de *
operatoren Mod
. Houd er rekening mee dat deze tabel symmetrisch is; voor een bepaalde combinatie van operand-gegevenstypen is het resultaatgegevenstype hetzelfde, ongeacht de volgorde van de operanden.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Kort | SByte | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Decimal |
SByte |
SByte | SByte | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Decimal |
Byte |
Kort | Kort | Byte | Kort | UShort | Geheel getal | UInteger | Lang | ULong |
Short |
Kort | Kort | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Decimal |
UShort |
Geheel getal | Geheel getal | UShort | Geheel getal | UShort | Geheel getal | UInteger | Lang | ULong |
Integer |
Geheel getal | Geheel getal | Geheel getal | Geheel getal | Geheel getal | Geheel getal | Lang | Lang | Decimal |
UInteger |
Lang | Lang | UInteger | Lang | UInteger | Lang | UInteger | Lang | ULong |
Long |
Lang | Lang | Lang | Lang | Lang | Lang | Lang | Lang | Decimal |
ULong |
Decimal | Decimal | ULong | Decimal | ULong | Decimal | ULong | Decimal | ULong |
\Operator
In de volgende tabel ziet u de resultaatgegevenstypen voor de \
operator. Houd er rekening mee dat deze tabel symmetrisch is; voor een bepaalde combinatie van operand-gegevenstypen is het resultaatgegevenstype hetzelfde, ongeacht de volgorde van de operanden.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Kort | SByte | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Lang |
SByte |
SByte | SByte | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Lang |
Byte |
Kort | Kort | Byte | Kort | UShort | Geheel getal | UInteger | Lang | ULong |
Short |
Kort | Kort | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Lang |
UShort |
Geheel getal | Geheel getal | UShort | Geheel getal | UShort | Geheel getal | UInteger | Lang | ULong |
Integer |
Geheel getal | Geheel getal | Geheel getal | Geheel getal | Geheel getal | Geheel getal | Lang | Lang | Lang |
UInteger |
Lang | Lang | UInteger | Lang | UInteger | Lang | UInteger | Lang | ULong |
Long |
Lang | Lang | Lang | Lang | Lang | Lang | Lang | Lang | Lang |
ULong |
Lang | Lang | ULong | Lang | ULong | Lang | ULong | Lang | ULong |
Als een operand van de operator Decimal, Single of Double is, probeert Visual Basic deze \
te converteren naar Long vóór de bewerking en is Long
het resultaatgegevenstype.
Relationele en bitsgewijze vergelijkingen
Het resultaatgegevenstype van een relationele bewerking (=
, <>
, <
, >
, , ) <=
>=
is altijd Boolean
booleaanse gegevenstype. Hetzelfde geldt voor logische bewerkingen (And
, AndAlso
, Not
, Or
, , , ) Xor
OrElse
op Boolean
operanden.
Het resultaatgegevenstype van een bitsgewijze logische bewerking is afhankelijk van de gegevenstypen van de operanden. Houd er rekening mee dat AndAlso
en OrElse
alleen zijn gedefinieerd voor Boolean
en Visual Basic elke operand converteert naar behoefte Boolean
voordat de bewerking wordt uitgevoerd.
=, <>, <, >, <= en >= Operatoren
Als beide operanden zijn Boolean
, is Visual Basic van mening True
dat deze kleiner is dan False
. Als een numeriek type wordt vergeleken met een String
, probeert Visual Basic de String
naar vóór de bewerking te Double
converteren. Een Char
of Date
operand kan alleen worden vergeleken met een andere operand van hetzelfde gegevenstype. Het resultaatgegevenstype is altijd Boolean
.
Bitwise Not Operator
In de volgende tabel ziet u de resultaatgegevenstypen voor de bitsgewijze Not
operator.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Not |
Booleaanse waarde | SByte | Byte | Kort | UShort | Geheel getal | UInteger | Lang | ULong |
Als de operand is Decimal
, Single
, Double
of String
, probeert Visual Basic deze te converteren naar Long
vóór de bewerking en is het resultaatgegevenstype Long
.
Bitsgewijze en, or- en Xor-operatoren
In de volgende tabel ziet u de resultaatgegevenstypen voor de bitsgewijze And
operatoren Or
en Xor
operators. Houd er rekening mee dat deze tabel symmetrisch is; voor een bepaalde combinatie van operand-gegevenstypen is het resultaatgegevenstype hetzelfde, ongeacht de volgorde van de operanden.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Booleaanse waarde | SByte | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Lang |
SByte |
SByte | SByte | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Lang |
Byte |
Kort | Kort | Byte | Kort | UShort | Geheel getal | UInteger | Lang | ULong |
Short |
Kort | Kort | Kort | Kort | Geheel getal | Geheel getal | Lang | Lang | Lang |
UShort |
Geheel getal | Geheel getal | UShort | Geheel getal | UShort | Geheel getal | UInteger | Lang | ULong |
Integer |
Geheel getal | Geheel getal | Geheel getal | Geheel getal | Geheel getal | Geheel getal | Lang | Lang | Lang |
UInteger |
Lang | Lang | UInteger | Lang | UInteger | Lang | UInteger | Lang | ULong |
Long |
Lang | Lang | Lang | Lang | Lang | Lang | Lang | Lang | Lang |
ULong |
Lang | Lang | ULong | Lang | ULong | Lang | ULong | Lang | ULong |
Als een operand is Decimal
, Single
, Double
of String
, probeert Visual Basic deze te converteren naar Long
vóór de bewerking en is het resultaatgegevenstype hetzelfde als als als die operand al was geweest Long
.
Diverse operators
De &
operator is alleen gedefinieerd voor het samenvoegen van String
operanden. Visual Basic converteert elke operand zo nodig naar String
vóór de bewerking en het resultaatgegevenstype is altijd String
. Voor de doeleinden van de &
operator worden alle conversies die moeten String
worden beschouwd als verbreiding, zelfs als Option Strict
dat het is On
.
Voor de Is
operators IsNot
moeten beide operanden van een verwijzingstype zijn. Voor TypeOf
de expressie ...Is
moet de eerste operand van een verwijzingstype zijn en moet de tweede operand de naam van een gegevenstype zijn. In al deze gevallen is Boolean
het resultaatgegevenstype .
De Like
operator is alleen gedefinieerd voor patroonkoppeling van String
operanden. Visual Basic probeert elke operand zo nodig te converteren naar String
vóór de bewerking. Het resultaatgegevenstype is altijd Boolean
.