Delen via


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, IntegerShortByteUShort, UInteger, , en LongULong) 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), ULonggenereert het .NET Framework een DivideByZeroException uitzondering. ShortByteSByte 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, , Longof 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, Integerof Long)

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, , OrAnden 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.

Zie ook