Delen via


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

  • SByte, Byte — 256 mogelijke integrale 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 Decimalwordt 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, Doubleof 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 Longhet resultaatgegevenstype.

Relationele en bitsgewijze vergelijkingen

Het resultaatgegevenstype van een relationele bewerking (=, <>, <, >, , ) <=>=is altijd Booleanbooleaanse gegevenstype. Hetzelfde geldt voor logische bewerkingen (And, AndAlso, Not, Or, , , ) XorOrElseop 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 Booleanen 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, Doubleof 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 Andoperatoren Oren 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, Doubleof 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 TypeOfde 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 Booleanhet 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.

Zie ook