Datové typy výsledků operátoru (Visual Basic)
Jazyk Visual Basic určuje datový typ výsledku operace na základě datových typů operandů. V některých případech to může být datový typ s větším rozsahem než jeden operand.
Rozsahy datového typu
Rozsahy relevantních datových typů, v pořadí od nejmenšího po největší, jsou následující:
Logická hodnota – dvě možné hodnoty
Krátký, UShort — 65 536 (6,5...E+4) možné celočíselné hodnoty
Celé číslo, UInteger — 4,294,967,296 (4,2...E+9) možné celočíselné hodnoty
Long, ULong – 18 446 744 073 709 551 615 (1,8...E+19) možné integrální hodnoty
Desetinné číslo – 1,5...E+29 možné celočíselné hodnoty, maximální rozsah 7,9...E+28 (absolutní hodnota)
Jednoduchý – maximální rozsah 3,4...E+38 (absolutní hodnota)
Double — maximální rozsah 1,7...E+308 (absolutní hodnota)
Další informace o datových typech jazyka Visual Basic naleznete v tématu Datové typy.
Pokud se operand vyhodnotí jako Nothing, aritmetické operátory jazyka Visual Basic ji považují za nula.
Desetinná aritmetika
Všimněte si, že datový typ Decimal není číslo s plovoucí desetinnou čárkou ani celé číslo.
Pokud je operand +
, , –
, /
*
nebo Mod
operace Decimal
a druhý není Single
nebo Double
, Jazyk Visual Basic rozšiřuje druhý operand na Decimal
. Provádí operaci v Decimal
a výsledek datového typu je Decimal
.
Aritmetika s plovoucí desetinou čárkou
Jazyk Visual Basic provádí většinu aritmetik s plovoucí deseti desetinou čárkou v double, což je nejúčinnější datový typ pro takové operace. Nicméně, pokud jeden operand je Single a druhý není Double
, Visual Basic provede operaci v Single
. Rozšiřuje každý operand podle potřeby na příslušný datový typ před operací a výsledek má tento datový typ.
/ a ^ – operátory
Operátor /
je definován pouze pro datové typy Decimal, Single a Double . Jazyk Visual Basic rozšiřuje každý operand podle potřeby na příslušný datový typ před operací a výsledek má tento datový typ.
V následující tabulce jsou uvedeny datové typy výsledků operátoru /
. Všimněte si, že tato tabulka je symetrická; pro danou kombinaci datových typů operandu je výsledný datový typ stejný bez ohledu na pořadí operandů.
Decimal |
Single |
Double |
Libovolný typ celého čísla | |
---|---|---|---|---|
Decimal |
Desetinné číslo | Jeden | Hodnota s dvojitou přesností | Desetinné číslo |
Single |
Jednotlivé | Jednotlivé | Hodnota s dvojitou přesností | Jeden |
Double |
Hodnota s dvojitou přesností | Hodnota s dvojitou přesností | Hodnota s dvojitou přesností | Hodnota s dvojitou přesností |
Libovolný typ celého čísla | Desetinné číslo | Jeden | Hodnota s dvojitou přesností | Hodnota s dvojitou přesností |
Operátor ^
je definován pouze pro Double
datový typ. Jazyk Visual Basic rozšiřuje každý operand podle potřeby na Double
před operací a datový typ výsledku je vždy Double
.
Celočíselná aritmetika
Datový typ výsledku celočíselné operace závisí na datových typech operandů. Obecně platí, že Jazyk Visual Basic používá k určení datového typu výsledku následující zásady:
Pokud oba operandy binárního operátoru mají stejný datový typ, výsledek má tento datový typ. Výjimka je
Boolean
, která je nucenaShort
.Pokud se nepodepsaný operand účastní se znaménkem operandu, má výsledek typ se znaménkem s alespoň tak velkým rozsahem jako jeden operand.
V opačném případě má výsledek obvykle větší ze dvou datových typů operandu.
Všimněte si, že datový typ výsledku nemusí být stejný jako datový typ operandu.
Poznámka:
Datový typ výsledku není vždy dostatečně velký, aby mohl obsahovat všechny možné hodnoty vyplývající z operace. K výjimce OverflowException může dojít, pokud je hodnota pro datový typ výsledku příliš velká.
Unární + a – Operátory
Následující tabulka uvádí datové typy výsledků pro dva unární operátory +
a –
.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Unární + |
Krátké | SByte | Byte | Krátké | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Unární – |
Krátké | SByte | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Desetinné číslo |
<< a >> operátory
Následující tabulka uvádí datové typy výsledků pro dva operátory <<
bitové směny a >>
. Visual Basic zachází s každým operátorem posunu bitu jako s unárním operátorem v levém operandu (bitový vzor, který se má posunout).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
<< , >> |
Krátké | SByte | Byte | Krátké | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Pokud je Decimal
levý operand , Single
nebo Double
String
, Visual Basic se pokusí jej převést na Long
před operací a výsledek datový typ je Long
. Pravý operand (počet bitových pozic pro posun) musí být Integer
nebo typ, který se rozšiřuje na Integer
.
Binární operátory +, –, *a Mod
Následující tabulka ukazuje datové typy výsledků pro binární +
a operátory a –
operátory a Mod
operátory*
. Všimněte si, že tato tabulka je symetrická; pro danou kombinaci datových typů operandu je výsledný datový typ stejný bez ohledu na pořadí operandů.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Krátké | SByte | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Desetinné číslo |
SByte |
SByte | SByte | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Desetinné číslo |
Byte |
Krátké | Krátké | Byte | Krátké | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Short |
Krátké | Krátké | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Desetinné číslo |
UShort |
Celé číslo | Celé číslo | UShort | Celé číslo | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Integer |
Celé číslo | Celé číslo | Celé číslo | Celé číslo | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Desetinné číslo |
UInteger |
Dlouhé celé číslo | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Long |
Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Desetinné číslo |
ULong |
Desetinné číslo | Desetinné číslo | ULong | Desetinné číslo | ULong | Desetinné číslo | ULong | Desetinné číslo | ULong |
\ – operátor
V následující tabulce jsou uvedeny datové typy výsledků operátoru \
. Všimněte si, že tato tabulka je symetrická; pro danou kombinaci datových typů operandu je výsledný datový typ stejný bez ohledu na pořadí operandů.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Krátké | SByte | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
SByte |
SByte | SByte | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
Byte |
Krátké | Krátké | Byte | Krátké | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Short |
Krátké | Krátké | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
UShort |
Celé číslo | Celé číslo | UShort | Celé číslo | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Integer |
Celé číslo | Celé číslo | Celé číslo | Celé číslo | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
UInteger |
Dlouhé celé číslo | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Long |
Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
ULong |
Dlouhé celé číslo | Dlouhé celé číslo | ULong | Dlouhé celé číslo | ULong | Dlouhé celé číslo | ULong | Dlouhé celé číslo | ULong |
Pokud je operand operátoru \
Decimal, Single nebo Double, Visual Basic se pokusí jej převést na Long před operací a výsledek datový typ je Long
.
Relační a bitové porovnání
Datový typ výsledku relační operace (=
, <>
, <
>
, <=
) >=
je vždy Boolean
logický datový typ. Totéž platí pro logické operace (And
, AndAlso
, Not
, Or
, OrElse
Xor
) na Boolean
operandech.
Datový typ výsledku bitové logické operace závisí na datových typech operandů. Všimněte si, že AndAlso
a OrElse
jsou definovány pouze pro Boolean
a Visual Basic převede každý operand podle potřeby na Boolean
před provedením operace.
=, <>, , <= <>a >= Operátory
Pokud jsou Boolean
oba operandy , Visual Basic se domnívá True
, že je menší než False
. Pokud je číselný typ porovnán s String
, Visual Basic se pokusí převést na String
Double
před operací. A Char
nebo Date
operand lze porovnat pouze s jiným operandem stejného datového typu. Datový typ výsledku je vždy Boolean
.
Bitový operátor not
Následující tabulka ukazuje datové typy výsledků pro bitový Not
operátor.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Not |
Logická hodnota | SByte | Byte | Krátké | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Pokud je Decimal
operand , , Single
Double
nebo String
, Visual Basic pokusí jej převést na Long
před operací a výsledek datový typ je Long
.
Bitové operátory And, Or a Xor
Následující tabulka uvádí datové typy výsledků pro bitové And
Or
operátory a Xor
operátory. Všimněte si, že tato tabulka je symetrická; pro danou kombinaci datových typů operandu je výsledný datový typ stejný bez ohledu na pořadí operandů.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Logická hodnota | SByte | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
SByte |
SByte | SByte | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
Byte |
Krátké | Krátké | Byte | Krátké | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Short |
Krátké | Krátké | Krátké | Krátké | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
UShort |
Celé číslo | Celé číslo | UShort | Celé číslo | UShort | Celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Integer |
Celé číslo | Celé číslo | Celé číslo | Celé číslo | Celé číslo | Celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
UInteger |
Dlouhé celé číslo | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | Celé číslo UInteger | Dlouhé celé číslo | ULong |
Long |
Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo | Dlouhé celé číslo |
ULong |
Dlouhé celé číslo | Dlouhé celé číslo | ULong | Dlouhé celé číslo | ULong | Dlouhé celé číslo | ULong | Dlouhé celé číslo | ULong |
Pokud je Decimal
operand , , Single
Double
nebo String
, Visual Basic se pokusí převést na Long
před operací, a výsledný datový typ je stejný jako v případě, že tento operand již byl Long
.
Různé operátory
Operátor &
je definován pouze pro zřetězení String
operandů. Jazyk Visual Basic převede každý operand podle potřeby na String
před operací a datový typ výsledku je vždy String
. Pro účely operátoru &
jsou všechny převody String
považovány za rozšiřující, i když Option Strict
je On
.
Operátory Is
a IsNot
operátory vyžadují, aby oba operandy byly odkazovým typem. Výraz TypeOf
...Is
vyžaduje, aby první operand byl odkazovým typem a druhým operandem byl název datového typu. Ve všech těchto případech je Boolean
datový typ výsledku .
Operátor Like
je definován pouze pro porovnávání vzorů String
operandů. Visual Basic se pokusí podle potřeby převést každý operand na String
před operací. Datový typ výsledku je vždy Boolean
.