Sdílet prostřednictvím


Aritmetické operátory v jazyce Visual Basic

Aritmetické operátory slouží k provádění mnoha známých aritmetických operací, které zahrnují výpočet číselných hodnot reprezentovaných literály, proměnnými, jinými výrazy, voláními funkcí a vlastností a konstantami. Klasifikované pomocí aritmetických operátorů jsou operátory bitového posunu, které fungují na úrovni jednotlivých bitů operandů a posunují jejich bitové vzory doleva nebo doprava.

Aritmetické operace

Ve výrazu můžete sečíst dvě hodnoty společně s operátorem + nebo odečíst jednu od druhé pomocí operátoru - Operator (Visual Basic), jak ukazuje následující příklad.

Dim x As Integer
x = 67 + 34
x = 32 - 12

Negaation také používá – Operator (Visual Basic), ale pouze s jedním operandem, jak ukazuje následující příklad.

Dim x As Integer = 65
Dim y As Integer
y = -x

Násobení a dělení používají * Operátor a / Operator (Visual Basic) v uvedeném pořadí, jak ukazuje následující příklad.

Dim y As Double
y = 45 * 55.23
y = 32 / 23

Exponentiation používá ^ Operator, jak ukazuje následující příklad.

Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).

Celočíselné dělení se provádí pomocí operátoru \ (Visual Basic). Celočíselné dělení vrátí podíl, tj. celé číslo, které představuje počet, kolikrát může dělitel dělitel rozdělit na dividendu bez zohlednění jakéhokoli zbytku. Dělitel i dělitel musí být celočíselné typy (SByte, Byte, Short, UShort, Integer, UIntegerLonga ULong) pro tento operátor. Všechny ostatní typy musí být nejprve převedeny na celočíselný typ. Následující příklad ukazuje celočíselné dělení.

Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.

Moduly aritmetika se provádí pomocí modního operátoru. Tento operátor vrátí zbytek po rozdělení dělitele na dividendu celočíselným počtem. Pokud jsou dělitel i dělitel celočíselné typy, je vrácená hodnota integrální. Pokud dělitel a dělitel jsou typy s plovoucí desetinou čárkou, vrátí se také hodnota s plovoucí desetinou čárkou. Následující příklad ukazuje toto chování.

Dim x As Integer = 100
Dim y As Integer = 6
Dim z As Integer
z = x Mod y
' The preceding statement sets z to 4.
Dim a As Double = 100.3
Dim b As Double = 4.13
Dim c As Double
c = a Mod b
' The preceding statement sets c to 1.18.

Pokus o dělení podle nuly

Dělení nulou má různé výsledky v závislosti na zahrnutých datových typech. V integrálních děleních (SByte, Byte, UShortIntegerUIntegerShort, Long), ULongrozhraní .NET Framework vyvolá DivideByZeroException výjimku. V operacích dělení na datovém Decimal typu nebo Single v rozhraní .NET Framework dojde také k výjimce DivideByZeroException .

V dělení s plovoucí desetinnou čárkou Double zahrnujících datový typ není vyvolán žádná výjimka a výsledkem je člen třídy představující NaN, PositiveInfinitynebo NegativeInfinity, v závislosti na dividendě. Následující tabulka shrnuje různé výsledky pokusu o rozdělení Double hodnoty nulou.

Datový typ Dividend Datový typ Dělitele Hodnota dividendy Výsledek
Double Double 0 NaN (ne matematicky definované číslo)
Double Double > 0 PositiveInfinity
Double Double < 0 NegativeInfinity

Když chytíte DivideByZeroException výjimku, můžete její členy použít k jeho zpracování. Message Například vlastnost obsahuje text zprávy pro výjimku. Další informace naleznete v tématu Vyzkoušet... Chytit... Příkaz Finally.

Operace bitového posunu

Operace bitové směny provádí aritmetický posun v bitovém vzoru. Vzor je obsažen v operandu vlevo, zatímco operand na pravé straně určuje počet pozic, které se mají posunout. Vzor můžete posunout doprava pomocí operátoru >> nebo doleva pomocí operátoru.<<

Datový typ operandu vzoru musí být , , , , , , UInteger, Longnebo ULong. IntegerUShortShortByteSByte Datový typ operandu posunu musí být Integer nebo musí být rozšířen na Integer.

Aritmetické posuny nejsou kruhové, což znamená, že bity posunuté z jednoho konce výsledku se na druhém konci znovu nevyvolají. Pozice bitů uvolněné posunem jsou nastaveny takto:

  • 0 pro aritmetický levý posun

  • 0 pro aritmetický pravý posun kladného čísla

  • 0 pro aritmetický posun pravého datového typu bez znaménka (Byte, UShort, UInteger) ULong

  • 1 pro aritmetický pravý posun záporného čísla (SByte, Short, Integer, nebo Long)

Následující příklad posune Integer hodnotu doleva i doprava.

Dim lResult, rResult As Integer
Dim pattern As Integer = 12
' The low-order bits of pattern are 0000 1100.
lResult = pattern << 3
' A left shift of 3 bits produces a value of 96.
rResult = pattern >> 2
' A right shift of 2 bits produces value of 3.

Aritmetické směny nikdy negenerují výjimky přetečení.

Bitové operace

Kromě logických operátorů, NotOrAnda Xor také provádět bitové aritmetické při použití s číselnými hodnotami. Další informace naleznete v tématu Bitové operace v logických a bitových operátorech v jazyce Visual Basic.

Typ Sejf ty

Operandy by normálně měly být stejného typu. Pokud například přidáváte proměnnou Integer , měli byste ji přidat do jiné Integer proměnné a výsledek přiřadit také proměnné typu Integer .

Jedním ze způsobů, jak zajistit správné psaní kódu, je použít příkaz Option Strict. Pokud nastavíte Option Strict On, Visual Basic automaticky provede převody bezpečného typu. Pokud se například pokusíte přidat proměnnou Integer do Double proměnné a přiřadit hodnotu proměnné Double , operace pokračuje normálně, protože Integer hodnotu lze převést na Double bez ztráty dat. Převody typu nebezpečné, na druhé straně způsobují chybu kompilátoru s Option Strict On. Pokud se například pokusíte přidat proměnnou Integer do Double proměnné a přiřadit hodnotu proměnné Integer , výsledky chyby kompilátoru, protože Double proměnnou nelze implicitně převést na typ Integer.

Pokud však nastavíte Option Strict Off, Visual Basic umožňuje implicitní zužující převody proběhnout, i když mohou vést k neočekávané ztrátě dat nebo přesnosti. Z tohoto důvodu doporučujeme použít Option Strict On při psaní produkčního kódu. Další informace naleznete v tématu Rozšíření a zužování převodů.

Viz také