Datové typy výsledků operátoru (Visual Basic)

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ž u obou operandů.

Rozsahy datového typu

Rozsahy relevantních datových typů, od nejmenších po největší, jsou následující:

  • Boolean – dvě možné hodnoty

  • SByte, Byte – 256 možných celočíselných hodnot

  • Short, UShort – 65 536 (6,5... E + 4) možné celočíselné hodnoty

  • Integer, UInteger – – 4 294 967 296 (4.2... E + 9) možné celočíselné hodnoty

  • Long, ulong – 18446744073709551615 (1.8... E + 19) možné celočíselné hodnoty

  • Decimal – 1,5... e + 29 možné celočíselné hodnoty, maximální rozsah 7.9... e + 28 (absolutní hodnota)

  • Single – maximální rozsah 3.4... E + 38 (absolutní hodnota)

  • Double – maximální rozsah 1.7... E + 308 (absolutní hodnota)

další informace o Visual Basic datových typů najdete v tématu datové typy.

pokud je operand vyhodnocen jako Nothing, Visual Basic aritmetické operátory jsou považovány za nulu.

Desítkové aritmetické operace

Všimněte si, že datový typ Decimal není plovoucí desetinná čárka ani celé číslo.

pokud je jeden z operandů + , ,, * / nebo Mod operace, Decimal a druhý není Single nebo Double , Visual Basic rozšiřuje druhý operand na Decimal . Provede operaci v Decimal a výsledný datový typ je Decimal .

Floating-Point aritmetické operace

Visual Basic provádí většinu aritmetických výpočtů s plovoucí desetinnou čárkou v Double, což je nejúčinnější datový typ pro tyto operace. pokud je však jeden operand jediný a druhý není Double , Visual Basic provede operaci v Single . Rozšiřuje každý operand tak, jak je to nutné pro příslušný datový typ před operací a výsledek má tento datový typ.

Operátory/a ^

/Operátor je definován pouze pro datové typy Decimal, Singlea Double . Visual Basic rozšiřuje každý operand tak, jak je to nutné pro příslušný datový typ před operací a výsledek má tento datový typ.

V následující tabulce jsou uvedeny typy dat výsledků pro / operátor. Všimněte si, že je tato tabulka symetrická; pro danou kombinaci datových typů operand je výsledný datový typ stejný bez ohledu na pořadí operandů.

Decimal Single Double Libovolný celočíselný typ
Decimal Decimal Jednoduché dvojité Decimal
Single Jednoduché Jednoduché dvojité Jednoduché
Double dvojité dvojité dvojité dvojité
Libovolný celočíselný typ Decimal Jednoduché dvojité dvojité

^Operátor je definován pouze pro Double datový typ. Visual Basic rozšiřuje každý operand tak, jak je potřeba Double před operací, a výsledný datový typ je vždycky Double .

Aritmetický typ Integer

Výsledný datový typ celočíselné operace závisí na datových typech operandů. obecně platí, že Visual Basic k určení typu výsledných dat používá následující zásady:

  • Pokud mají oba operandy binárního operátoru stejný datový typ, výsledek má tento datový typ. Výjimka je Boolean , což je vynuceno Short .

  • Pokud se operand bez znaménka účastní podepsaného operandu, má výsledek podepsaný typ s aspoň jako velký rozsah jako jeden operand.

  • V opačném případě má výsledek obvykle větší ze dvou datových typů operandů.

Všimněte si, že výsledný datový typ nemusí být stejný jako datový typ operandu.

Poznámka

Výsledný datový typ není vždy dostatečně velký, aby mohl uchovávat všechny možné hodnoty, které jsou výsledkem operace. OverflowExceptionVýjimka může nastat, pokud je hodnota pro výsledný datový typ příliš velká.

Unární operátory + a –

V následující tabulce jsou uvedeny typy dat výsledků pro dva unární operátory + a .

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Unární + Dostatečná SByte Byte Dostatečná UShort Integer UInteger – Dlouhou ULong
Unární Dostatečná SByte Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Decimal

<< and >> operátory

V následující tabulce jsou uvedeny typy dat výsledků pro dva operátory bitového posunutí << a >> . Visual Basic zpracovává každý operátor bitového posunutí jako unární operátor na levém operandu (bitová maska, která se má posunout).

Boolean SByte Byte Short UShort Integer UInteger Long ULong
<<, >> Dostatečná SByte Byte Dostatečná UShort Integer UInteger – Dlouhou ULong

pokud je levý operand Decimal , Single , Double nebo String , Visual Basic se pokusí ho převést na Long před operací a výsledný datový typ je Long . Pravý operand (počet bitových pozic k posunu) musí být Integer nebo typ, který se rozšíří na Integer .

Operátory Binary +, –, * a mod

V následující tabulce jsou uvedeny typy dat výsledků pro binární + a operátory a * Mod operátory a. Všimněte si, že je tato tabulka symetrická; pro danou kombinaci datových typů operand je výsledný datový typ stejný bez ohledu na pořadí operandů.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Dostatečná SByte Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Decimal
SByte SByte SByte Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Decimal
Byte Dostatečná Dostatečná Byte Dostatečná UShort Integer UInteger – Dlouhou ULong
Short Dostatečná Dostatečná Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Decimal
UShort Integer Integer UShort Integer UShort Integer UInteger – Dlouhou ULong
Integer Integer Integer Integer Integer Integer Integer Dlouhou Dlouhou Decimal
UInteger Dlouhou Dlouhou UInteger – Dlouhou UInteger – Dlouhou UInteger – Dlouhou ULong
Long Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Decimal
ULong Decimal Decimal ULong Decimal ULong Decimal ULong Decimal ULong

\ – operátor

V následující tabulce jsou uvedeny typy dat výsledků pro \ operátor. Všimněte si, že je tato tabulka symetrická; pro danou kombinaci datových typů operand je výsledný datový typ stejný bez ohledu na pořadí operandů.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Dostatečná SByte Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Dlouhou
SByte SByte SByte Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Dlouhou
Byte Dostatečná Dostatečná Byte Dostatečná UShort Integer UInteger – Dlouhou ULong
Short Dostatečná Dostatečná Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Dlouhou
UShort Integer Integer UShort Integer UShort Integer UInteger – Dlouhou ULong
Integer Integer Integer Integer Integer Integer Integer Dlouhou Dlouhou Dlouhou
UInteger Dlouhou Dlouhou UInteger – Dlouhou UInteger – Dlouhou UInteger – Dlouhou ULong
Long Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou
ULong Dlouhou Dlouhou ULong Dlouhou ULong Dlouhou ULong Dlouhou ULong

pokud je jeden operand \ operátoru Decimal, Singlenebo Double, Visual Basic se pokusí ho převést na dlouhou dobu před operací a výsledný 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.

Výsledný datový typ 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 Boolean před provedením operace převede každý operand podle potřeby.

=, <>, <, > , <=, and > = – operátory

jsou-li oba operandy Boolean , Visual Basic považuje True být menší než False . pokud číselný typ je porovnán s String , Visual Basic se pokusí převést na String na Double před operací. CharOperand nebo Date lze porovnat pouze s jiným operandem stejného datového typu. Výsledný datový typ je vždycky Boolean .

Bitový operátor NOT

V následující tabulce jsou uvedeny typy dat výsledků pro bitový Not operátor.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Not Logická hodnota SByte Byte Dostatečná UShort Integer UInteger – Dlouhou ULong

pokud je operand Decimal , Single , Double , nebo String , Visual Basic se pokusí ho převést na Long před operací a výsledný datový typ je Long .

Bitové operátory and, or a XOR

V následující tabulce jsou uvedeny typy dat výsledků pro bitové And operátory, Or a Xor . Všimněte si, že je tato tabulka symetrická; pro danou kombinaci datových typů operand 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 Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Dlouhou
SByte SByte SByte Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Dlouhou
Byte Dostatečná Dostatečná Byte Dostatečná UShort Integer UInteger – Dlouhou ULong
Short Dostatečná Dostatečná Dostatečná Dostatečná Integer Integer Dlouhou Dlouhou Dlouhou
UShort Integer Integer UShort Integer UShort Integer UInteger – Dlouhou ULong
Integer Integer Integer Integer Integer Integer Integer Dlouhou Dlouhou Dlouhou
UInteger Dlouhou Dlouhou UInteger – Dlouhou UInteger – Dlouhou UInteger – Dlouhou ULong
Long Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou Dlouhou
ULong Dlouhou Dlouhou ULong Dlouhou ULong Dlouhou ULong Dlouhou ULong

pokud je operand Decimal , Single , Double , nebo String , Visual Basic se pokusí ho převést na Long před operací a výsledný datový typ je stejný, jako by tento operand již byl Long .

Různé operátory

&Operátor je definován pouze pro zřetězení String operandů. Visual Basic každou hodnotu operandu String před operací převede tak, jak je potřeba, a výsledný datový typ je vždycky String . Pro účely & operátoru jsou všechny převody na String jsou považovány za rozšiřující, a to i v případě, že Option Strict je On .

IsOperátory a IsNot vyžadují, aby oba operandy byly typu odkazu. TypeOfVýraz... Is vyžaduje, aby první operand byl typu odkazu a druhý operand byl názvem datového typu. Ve všech těchto případech je výsledný datový typ Boolean .

LikeOperátor je definován pouze pro porovnávání vzorů String operandů. Visual Basic se pokusí převést každý operand podle potřeby String před operací. Výsledný datový typ je vždycky Boolean .

Viz také