Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Visual Basic avgör resultatdatatypen för en åtgärd baserat på operandernas datatyper. I vissa fall kan detta vara en datatyp med ett större intervall än för någon av operanderna.
Datatypsintervall
Intervallen för relevanta datatyper, i ordning från minsta till största, är följande:
Booleskt värde – två möjliga värden
Heltal, UInteger – 4 294 967 296 (4,2...E+9) möjliga integralvärden
Long, ULong – 18 446 744 073 709 551 615 (1,8...E+19) möjliga integralvärden
Decimal – 1,5...E+29 möjliga integralvärden, maximalt intervall 7,9...E+28 (absolut värde)
Enskild – maximalt intervall 3,4...E+38 (absolut värde)
Double – maximalt intervall 1,7...E+308 (absolut värde)
Mer information om Visual Basic-datatyper finns i Datatyper.
Om en operand utvärderas till Ingenting behandlar Visual Basic-aritmetiska operatorer den som noll.
Decimal aritmetik
Observera att datatypen Decimal varken är flyttal eller heltal.
Om någon av operanderna i en , , , eller -åtgärd är Decimal och den andra inte Single är eller Double, utvidgar Visual Basic den andra operanden till Decimal.Mod/*–+ Den utför åtgärden i Decimal, och resultatdatatypen är Decimal.
Floating-Point aritmetik
Visual Basic utför mest flyttalsaritmetik i Double, vilket är den mest effektiva datatypen för sådana åtgärder. Men om den ena operanden är Single och den andra inte Doubleär , utför Visual Basic åtgärden i Single. Varje operande vidgas efter behov till lämplig datatyp före åtgärden och resultatet har den datatypen.
/ och ^ Operatorer
Operatorn / definieras endast för datatyperna Decimal, Single och Double . Visual Basic breddar varje operand efter behov till lämplig datatyp före åtgärden, och resultatet har den datatypen.
I följande tabell visas resultatdatatyperna för operatorn / . Observera att den här tabellen är symmetrisk. För en viss kombination av operanddatatyper är resultatdatatypen densamma oavsett operandernas ordning.
Decimal |
Single |
Double |
Alla heltalstyper | |
|---|---|---|---|---|
Decimal |
Decimal | Singel | dubbel | Decimal |
Single |
Singel | Singel | dubbel | Singel |
Double |
dubbel | dubbel | dubbel | dubbel |
| Alla heltalstyper | Decimal | Singel | dubbel | dubbel |
Operatorn ^ definieras endast för Double datatypen. Visual Basic breddar varje operand efter behov innan Double åtgärden och resultatdatatypen är alltid Double.
Heltals-Aritmetik
Resultatdatatypen för en heltalsåtgärd beror på operandernas datatyper. I allmänhet använder Visual Basic följande principer för att fastställa resultatdatatypen:
Om båda operanderna för en binär operator har samma datatyp har resultatet den datatypen. Ett undantag är
Boolean, som tvingas tillShort.Om en osignerad operand deltar med en signerad operand har resultatet en signerad typ med minst lika stort intervall som någon av operanderna.
Annars har resultatet vanligtvis den större av de två operanddatatyperna.
Observera att resultatdatatypen kanske inte är samma som någon av operanddatatyperna.
Anmärkning
Resultatdatatypen är inte alltid tillräckligt stor för att innehålla alla möjliga värden som är resultatet av åtgärden. Ett OverflowException undantag kan inträffa om värdet är för stort för resultatdatatypen.
Unary + och – Operatorer
I följande tabell visas resultatdatatyperna för de två unary-operatorerna + och –.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Unär + |
Kortfattad | SByte | byte | Kortfattad | UShort | Integer | UInteger | Lång | ULong |
Unär – |
Kortfattad | SByte | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Decimal |
<< och >> operatorer
I följande tabell visas resultatdatatyperna för de två bitskiftsoperatorerna << och >>. Visual Basic behandlar varje bitskiftsoperator som en unary-operator på sin vänstra operande (bitmönstret som ska flyttas).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
<<, >> |
Kortfattad | SByte | byte | Kortfattad | UShort | Integer | UInteger | Lång | ULong |
Om den vänstra operanden är , , , eller String, försöker Visual Basic konvertera den till Long före åtgärden och resultatdatatypen är Long. DoubleSingleDecimal Den högra operanden (antalet bitpositioner som ska flyttas) måste vara Integer eller en typ som vidgas till Integer.
Binära +, –, *och modoperatorer
I följande tabell visas resultatdatatyperna för binär- + och – operatorerna och operatorerna * och Mod . Observera att den här tabellen är symmetrisk. För en viss kombination av operanddatatyper är resultatdatatypen densamma oavsett operandernas ordning.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
Kortfattad | SByte | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Decimal |
SByte |
SByte | SByte | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Decimal |
Byte |
Kortfattad | Kortfattad | byte | Kortfattad | UShort | Integer | UInteger | Lång | ULong |
Short |
Kortfattad | Kortfattad | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Decimal |
UShort |
Integer | Integer | UShort | Integer | UShort | Integer | UInteger | Lång | ULong |
Integer |
Integer | Integer | Integer | Integer | Integer | Integer | Lång | Lång | Decimal |
UInteger |
Lång | Lång | UInteger | Lång | UInteger | Lång | UInteger | Lång | ULong |
Long |
Lång | Lång | Lång | Lång | Lång | Lång | Lång | Lång | Decimal |
ULong |
Decimal | Decimal | ULong | Decimal | ULong | Decimal | ULong | Decimal | ULong |
\Operatör
I följande tabell visas resultatdatatyperna för operatorn \ . Observera att den här tabellen är symmetrisk. För en viss kombination av operanddatatyper är resultatdatatypen densamma oavsett operandernas ordning.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
Kortfattad | SByte | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Lång |
SByte |
SByte | SByte | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Lång |
Byte |
Kortfattad | Kortfattad | byte | Kortfattad | UShort | Integer | UInteger | Lång | ULong |
Short |
Kortfattad | Kortfattad | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Lång |
UShort |
Integer | Integer | UShort | Integer | UShort | Integer | UInteger | Lång | ULong |
Integer |
Integer | Integer | Integer | Integer | Integer | Integer | Lång | Lång | Lång |
UInteger |
Lång | Lång | UInteger | Lång | UInteger | Lång | UInteger | Lång | ULong |
Long |
Lång | Lång | Lång | Lång | Lång | Lång | Lång | Lång | Lång |
ULong |
Lång | Lång | ULong | Lång | ULong | Lång | ULong | Lång | ULong |
Om någon av operatorns \ operander är Decimal, Enkel eller Dubbel, försöker Visual Basic konvertera den till Långt före åtgärden och resultatdatatypen är Long.
Relations- och bitvisjämförelser
Resultatdatatypen för en relationsåtgärd (=, , <><, >, <=, , >=) är alltid Booleanboolesk datatyp. Detsamma gäller för logiska åtgärder (And, , AndAlsoNot, Or, OrElse, Xor) på Boolean operander.
Resultatdatatypen för en bitvis logisk åtgärd beror på operandernas datatyper. Observera att AndAlso och OrElse endast definieras för Boolean, och Visual Basic konverterar varje operande efter behov till Boolean innan åtgärden utförs.
=, <>, <, >, <=, och >= Operatorer
Om båda operanderna är Booleananser True Visual Basic att det är mindre än False. Om en numerisk typ jämförs med en Stringförsöker Visual Basic konvertera String till Double före åtgärden. En Char eller Date operand kan bara jämföras med en annan operand av samma datatyp. Resultatdatatypen är alltid Boolean.
Bitvis inte operator
I följande tabell visas resultatdatatyperna för bitvisoperatorn Not .
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Not |
Boolean | SByte | byte | Kortfattad | UShort | Integer | UInteger | Lång | ULong |
Om operand är , , , eller String, försöker Visual Basic konvertera den till Long före åtgärden och resultatdatatypen är Long. DoubleSingleDecimal
Bitvis och, eller, och Xor-operatorer
I följande tabell visas resultatdatatyperna för operatorerna bitvis And, Oroch .Xor Observera att den här tabellen är symmetrisk. För en viss kombination av operanddatatyper är resultatdatatypen densamma oavsett operandernas ordning.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
Boolean | SByte | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Lång |
SByte |
SByte | SByte | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Lång |
Byte |
Kortfattad | Kortfattad | byte | Kortfattad | UShort | Integer | UInteger | Lång | ULong |
Short |
Kortfattad | Kortfattad | Kortfattad | Kortfattad | Integer | Integer | Lång | Lång | Lång |
UShort |
Integer | Integer | UShort | Integer | UShort | Integer | UInteger | Lång | ULong |
Integer |
Integer | Integer | Integer | Integer | Integer | Integer | Lång | Lång | Lång |
UInteger |
Lång | Lång | UInteger | Lång | UInteger | Lång | UInteger | Lång | ULong |
Long |
Lång | Lång | Lång | Lång | Lång | Lång | Lång | Lång | Lång |
ULong |
Lång | Lång | ULong | Lång | ULong | Lång | ULong | Lång | ULong |
Om en operand är Decimal, Single, Doubleeller String, försöker Visual Basic konvertera den till Long före åtgärden, och resultatdatatypen är densamma som om den operanden redan hade varit Long.
Diverse operatorer
Operatorn & definieras endast för sammanfogning av String operander. Visual Basic konverterar varje operand efter behov till String före åtgärden, och resultatdatatypen är alltid String. För operatorns & syften anses alla konverteringar till String vara bredare, även om Option Strict är On.
Operatorerna Is och IsNot kräver att båda operanderna är av en referenstyp. Uttrycket TypeOf...Is kräver att den första operanden är av en referenstyp och att den andra operanden är namnet på en datatyp. I alla dessa fall är Booleanresultatdatatypen .
Operatorn Like definieras endast för mönstermatchning av String operander. Visual Basic försöker konvertera varje operand efter behov till String före åtgärden. Resultatdatatypen är alltid Boolean.