Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az aritmetikai operátorok számos ismert aritmetikai művelet végrehajtására szolgálnak, amelyek a literálok, változók, egyéb kifejezések, függvény- és tulajdonsághívások és állandók által képviselt numerikus értékek kiszámítását foglalják magukban. Az aritmetikai operátorokkal is osztályozhatók a bit-shift operátorok, amelyek az operandusok egyes bitjeinek szintjén működnek, és a bitmintákat balra vagy jobbra tolják.
Aritmetikai műveletek
Egy kifejezésben két értéket is hozzáadhat a + operátorral együtt, vagy kivonhat egyet egy másikból a - Operátor (Visual Basic) használatával, ahogy az alábbi példa is mutatja.
Dim x As Integer
x = 67 + 34
x = 32 - 12
A Negation a - Operátort (Visual Basic) is használja, de csak egy operandussal, ahogy az alábbi példa is mutatja.
Dim x As Integer = 65
Dim y As Integer
y = -x
A szorzás és osztás a * Operátor és /Operátor (Visual Basic) függvényt használja, ahogy az alábbi példa is mutatja.
Dim y As Double
y = 45 * 55.23
y = 32 / 23
Az exponenciáció a ^ operátort használja, ahogy az alábbi példa is mutatja.
Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).
Az egész számok osztása a \ Operátor (Visual Basic) használatával történik. Az egész számok osztása a hányadost adja vissza, vagyis azt az egész számot, amely azt jelzi, hogy az osztó hány alkalommal osztható fel az osztalékra a fennmaradó rész figyelembe vétele nélkül. Az osztónak és az osztaléknak is egész típusúnak (SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
, és ULong
) kell lennie ehhez az operátorhoz. Minden más típust először integrál típussá kell konvertálni. Az alábbi példa az egész szám osztását mutatja be.
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
A Modulus aritmetika a Mod Operátor használatával történik. Ez az operátor a maradékot adja vissza, miután az osztót egész számú osztás után az osztalékba osztották. Ha az osztó és az osztalék is integráltípus, a visszaadott érték integrál. Ha az osztó és az osztalék lebegőpontos típusú, akkor a visszaadott érték is lebegőpontos. Az alábbi példa ezt a viselkedést mutatja be.
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.
Nullával való osztás kísérlete
A nullával való osztás az érintett adattípusoktól függően eltérő eredményt ad. Az integrált osztásokban (SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
, ULong
) a .NET-keretrendszer kivételt DivideByZeroException jelez. A .NET-keretrendszer Decimal
kivételt dob az Single
vagy DivideByZeroException adattípuson végzett osztási műveletek során.
Az adattípust tartalmazó Double
lebegőpontos osztásokban nem keletkezik kivétel, és az eredmény az osztaléktól függően az osztálytag képviseli a NaN, PositiveInfinity, vagy NegativeInfinity értéket. Az alábbi táblázat összefoglalja a Double
érték nullával való osztásának különböző eredményeit.
Osztalék adattípusa | Osztó adattípus | Osztalékérték | Eredmény |
---|---|---|---|
Double |
Double |
0 | NaN (nem matematikailag meghatározott szám) |
Double |
Double |
> 0 | PositiveInfinity |
Double |
Double |
< 0 | NegativeInfinity |
Ha elkap egy DivideByZeroException kivételt, felhasználhatja annak tagjait a kezeléséhez. A tulajdonság például a Message kivétel üzenetszövegét tartalmazza. További információ: Kipróbálás... Elkap... Végül nyilatkozat.
Bit-Shift műveletek
A biteltolásos művelet aritmetikai eltolódást hajt végre egy bitmintán. A minta a bal oldali operandusban található, míg a jobb oldali operandus határozza meg a minta eltolásához szükséges pozíciók számát. A mintát az Operátorral>> jobbra, az Operátorral<< balra mozgathatja.
A mintaoperndus adattípusának a következőnek kell lennie SByte
: , Byte
, Short
, UShort
, Integer
, UInteger
, Long
vagy ULong
. A shift mennyiség operandus adattípusának Integer
kell lennie, vagy kiszélesíthetőnek kell lennie Integer
.
Az aritmetikai eltolások nem körkörösek, ami azt jelenti, hogy az eredmény egyik végéről eltolt bitek nem lesznek újra bevezetve a másik végén. A műszak által kiürített bitpozíciók a következőképpen vannak beállítva:
0 aritmetikai bal eltolás esetén
Pozitív szám számának aritmetikai jobb eltolása esetén 0
Aritmetikai jobb eltolás egy nem aláírt adattípus esetén (0
Byte
,UShort
,UInteger
,ULong
)Negatív szám (
SByte
,Short
,Integer
, vagyLong
) számtani jobb eltolása esetén 1
Az alábbi példa balra és jobbra is eltol egy Integer
értéket.
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.
Az aritmetikai műveletek soha nem okoznak túlcsordulási kivételeket.
Bitenkénti műveletek
A logikai operátorok Not
Or
And
Xor
mellett bitenkénti számtani műveleteket is végezhet numerikus értékeken. További információért lásd a(z) "Bitműveletek" részt a Visual Basic Logikai és Bitműveleti Operátorai című dokumentumban.
Típusbiztonság
Az operandusoknak általában ugyanazon típusúaknak kell lenniük. Ha például hozzáad egy Integer
változót, azt egy másik Integer
változóhoz kell hozzáadnia, és az eredményt is hozzá kell rendelnie egy típusú Integer
változóhoz.
A helyes típusbiztos kódolási gyakorlat biztosításának egyik módja az Option Strict Utasítás használata. Ha be van állítva Option Strict On
, a Visual Basic automatikusan végrehajtja a típusbiztos konverziókat. Ha például változót próbál hozzáadni egy Integer
Double
változóhoz, és egy változóhoz Double
rendeli hozzá az értéket, a művelet normálisan folytatódik, mert egy Integer
érték adatvesztés nélkül konvertálható.Double
A nem biztonságos átalakítások viszont fordítási hibát okoznak a Option Strict On
-vel. Például, ha megpróbál egy Integer
változót hozzáadni egy Double
változóhoz, és az értéket egy Integer
változóhoz rendeli, fordítási hiba lép fel, mert egy Double
változó nem konvertálható implicit módon Integer
típusúvá.
Ha azonban beállítja Option Strict Off
, a Visual Basic lehetővé teszi az implicit szűkítési konverziók elvégzését, bár ezek váratlan adatvesztést vagy pontosságot eredményezhetnek. Ezért azt javasoljuk, hogy a produkciós kód írásakor használja Option Strict On
. További információkért lásd a konverziók kibővítését és szűkítését ismertető témakört.