Rekenkundige operatoren in Visual Basic
Rekenkundige operatoren worden gebruikt om veel van de bekende rekenkundige bewerkingen uit te voeren die betrekking hebben op de berekening van numerieke waarden die worden vertegenwoordigd door letterlijke waarden, variabelen, andere expressies, functie- en eigenschapsoproepen en constanten. Ook geclassificeerd met rekenkundige operatoren zijn de bit-shift-operatoren, die op het niveau van de afzonderlijke bits van de operanden handelen en hun bitpatronen naar links of rechts verplaatsen.
Rekenkundige bewerkingen
U kunt twee waarden in een expressie toevoegen in combinatie met de +-operator of een van elkaar aftrekken met de operator - (Visual Basic), zoals in het volgende voorbeeld wordt gedemonstreert.
Dim x As Integer
x = 67 + 34
x = 32 - 12
Negatie maakt ook gebruik van de Operator (Visual Basic), maar met slechts één operand, zoals in het volgende voorbeeld wordt gedemonstreert.
Dim x As Integer = 65
Dim y As Integer
y = -x
Vermenigvuldigen en delen gebruiken respectievelijk de * Operator en /Operator (Visual Basic), zoals in het volgende voorbeeld wordt gedemonstreert.
Dim y As Double
y = 45 * 55.23
y = 32 / 23
Exponentiation maakt gebruik van de operator ^, zoals in het volgende voorbeeld wordt gedemonstreert.
Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).
Deling van gehele getallen wordt uitgevoerd met behulp van de \Operator (Visual Basic). De deling van het gehele getal retourneert het quotiënt, dat wil gezegd, het gehele getal dat het aantal keren aangeeft dat de deler in het dividend kan delen zonder rekening te houden met een restgetal. Zowel de deler als het dividend moeten integrale typen zijn (SByte
, Integer
Short
Byte
UShort
, UInteger
, , en Long
ULong
) voor deze operator. Alle andere typen moeten eerst worden geconverteerd naar een integraal type. In het volgende voorbeeld ziet u de verdeling van gehele getallen.
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
Modulus-rekenkundige bewerkingen worden uitgevoerd met behulp van de Mod-operator. Deze operator retourneert de rest na het delen van de deler in het dividend een integraal aantal keren. Als zowel deler als het dividend integrale typen zijn, is de geretourneerde waarde integraal. Als deler en het dividend drijvende-kommatypen zijn, is de geretourneerde waarde ook drijvende komma. In het volgende voorbeeld ziet u dit gedrag.
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.
Poging tot delen door nul
Delen door nul heeft verschillende resultaten, afhankelijk van de betrokken gegevenstypen. In integrale delen (, , , , UShort
, Integer
, , UInteger
, , , Long
), ULong
genereert het .NET Framework een DivideByZeroException uitzondering. Short
Byte
SByte
In divisiebewerkingen voor het Decimal
of Single
gegevenstype genereert .NET Framework ook een DivideByZeroException uitzondering.
In drijvendekommagedelingen waarbij het Double
gegevenstype betrokken is, wordt er geen uitzondering gegenereerd en is het resultaat het klasselid dat staat voor NaN, PositiveInfinityof NegativeInfinity, afhankelijk van het dividend. De volgende tabel bevat een overzicht van de verschillende resultaten van het delen van een Double
waarde door nul.
Dividendgegevenstype | Gegevenstype deler | Dividendwaarde | Resultaat |
---|---|---|---|
Double |
Double |
0 | NaN (geen wiskundig gedefinieerd getal) |
Double |
Double |
> 0 | PositiveInfinity |
Double |
Double |
< 0 | NegativeInfinity |
Wanneer u een DivideByZeroException uitzondering onderscheppen, kunt u de leden ervan gebruiken om deze te verwerken. De eigenschap bevat bijvoorbeeld Message de berichttekst voor de uitzondering. Zie Proberen voor meer informatie ... Vangen... Tot slot verklaring.
Bit-Shift-bewerkingen
Een bit-shift-bewerking voert een rekenkundige verschuiving uit op een bitpatroon. Het patroon bevindt zich in de operand aan de linkerkant, terwijl de operand aan de rechterkant het aantal posities aangeeft dat het patroon moet worden verschoven. U kunt het patroon naar rechts verplaatsen met de operator of naar links met de<<operator.>>
Het gegevenstype van de patroonoperand moet zijn SByte
: , Byte
, Short
, UShort
, Integer
, UInteger
, , Long
of ULong
. Het gegevenstype van de operand voor de verschuivingshoeveelheid moet zijn Integer
of moet worden uitgebreid tot Integer
.
Rekenkundige verschuivingen zijn niet cirkelvormig, wat betekent dat de bits die van het ene uiteinde van het resultaat zijn verschoven, niet opnieuw worden geïntroduceerd aan het andere uiteinde. De bitposities die door een dienst zijn ontruimd, worden als volgt ingesteld:
0 voor een rekenkundige linkerdienst
0 voor een rekenkundige rechterverschuiving van een positief getal
0 voor een rekenkundige rechterverschuiving van een niet-ondertekend gegevenstype (
Byte
,UShort
,UInteger
,ULong
)1 voor een rekenkundige rechterverschuiving van een negatief getal (
SByte
,Short
,Integer
ofLong
)
In het volgende voorbeeld wordt een Integer
waarde zowel links als rechts verplaatst.
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.
Rekenkundige verschuivingen genereren nooit overloop-uitzonderingen.
Bitsgewijze bewerkingen
Naast logische operators, Not
, , Or
And
en Xor
ook bitsgewijze rekenkundige bewerkingen uitvoeren wanneer deze worden gebruikt voor numerieke waarden. Zie Bitwise Operations in Logische en Bitwise Operators in Visual Basic voor meer informatie.
Typeveiligheid
Operanden moeten normaal gesproken van hetzelfde type zijn. Als u bijvoorbeeld toevoegt aan een Integer
variabele, moet u deze toevoegen aan een andere Integer
variabele en moet u het resultaat ook toewijzen aan een variabele van het type Integer
.
Een manier om een goede typeveilige coderingspraktijk te garanderen, is het gebruik van de Option Strict-instructie. Als u deze optie insteltOption Strict On
, voert Visual Basic automatisch typeveilige conversies uit. Als u bijvoorbeeld probeert een Integer
variabele toe te voegen aan een Double
variabele en de waarde toe te wijzen aan een Double
variabele, wordt de bewerking normaal uitgevoerd, omdat een Integer
waarde zonder verlies van gegevens kan worden geconverteerd Double
. Type-onveilige conversies veroorzaken daarentegen een compilerfout met Option Strict On
. Als u bijvoorbeeld probeert een Integer
variabele toe te voegen aan een Double
variabele en de waarde toe te wijzen aan een Integer
variabele, treedt er een compilerfout op omdat een Double
variabele niet impliciet kan worden geconverteerd naar het type Integer
.
Als u echter visual Basic instelt Option Strict Off
, kunnen impliciete vermalingsconversies plaatsvinden, hoewel ze kunnen leiden tot onverwacht verlies van gegevens of precisie. Daarom raden we u aan om te gebruiken Option Strict On
bij het schrijven van productiecode. Zie Widening and Narrowing Conversions (Widening and Narrowing Conversions) voor meer informatie.