Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Negace také používá operátor - (Visual Basic), ale zahrnuje pouze jeden operand, 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 / Operátor (Visual Basic), 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ělit do dividendy, aniž by byl zohledněn jakýkoli zbytek. Dělitel i dělenec musí být celočíselné typy (SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
a 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.
Modulární aritmetika se provádí pomocí modulového operátoru. Tento operátor vrátí zbytek po vydělení dividendy dělitelem tolikrát, kolikrát je to možné celým číslem. Pokud jsou dělitel i dělenec celočíselné typy, je vrácená hodnota celočíselná. Pokud dělitel a dělenec jsou typy s plovoucími čárkami, vrátí se také hodnota s plovoucí čá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
, Short
, UShort
, Integer
, UInteger
, Long
, ULong
) rozhraní .NET Framework vyvolá DivideByZeroException výjimku. V operacích dělení datového typu Decimal
nebo Single
v rozhraní .NET Framework je také vyvolána výjimka 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í. Vlastnost Message například uchovává text zprávy pro výjimku. Další informace naleznete v tématu Vyzkoušet... Chytit... Příkaz Finally.
Bit-Shift Operace
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, o které se má vzor posunout. Vzor můžete posunout doprava pomocí operátoru>> nebo doleva pomocí operátoru<<.
Datový typ operandu vzoru musí být SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
nebo ULong
. 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ý pravý posun neznaménkového datového typu (
Byte
,UShort
,UInteger
,ULong
)1 pro aritmetický pravý posun záporného čísla (
SByte
,Short
,Integer
, neboLong
)
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ě toho, že jsou logickými operátory, Not
, Or
, And
a Xor
také provádějí bitovou aritmetiku 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.
Bezpečnost typů
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é praktiky psaní kódu s typovou bezpečností, 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. Nebezpečné převody typu naproti tomu způsobují chybu kompilátoru s Option Strict On
. Pokud se například pokusíte přidat proměnnou Integer
k proměnné Double
a přiřadit ji proměnné Integer
, vznikne chyba kompilátoru, protože proměnnou Double
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ů.