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

  • SByte, Bajt — 256 možných integrálních hodnot

  • 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 Decimala 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 nucena Short.

  • 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 Decimallevý operand , Singlenebo DoubleString, 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 Booleanlogický datový typ. Totéž platí pro logické operace (And, AndAlso, Not, Or, OrElseXor) 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 Booleana Visual Basic převede každý operand podle potřeby na Boolean před provedením operace.

=, <>, , <= <>a >= Operátory

Pokud jsou Booleanoba 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 StringDouble 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 Decimaloperand , , SingleDoublenebo 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é AndOroperá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 Decimaloperand , , SingleDoublenebo 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 Booleandatový 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.

Viz také