Arithmetische Operatoren in Visual Basic

Arithmetische Operatoren werden verwendet, um viele der bekannten arithmetischen Operationen durchzuführen, die die Berechnung numerischer Werte umfassen, die durch Literale, Variablen, andere Ausdrücke, Funktions- und Eigenschaftsaufrufe und Konstanten dargestellt werden. Ebenfalls mit arithmetischen Operatoren klassifiziert sind die Bitverschiebungsoperatoren, die auf der Ebene der einzelnen Bits der Operanden agieren und ihre Bitmuster nach links oder rechts verschieben.

Arithmetische Operationen

Sie können zwei Werte in einem Ausdruck zusammen mit dem +-Operatorhinzufügen oder einen von einem anderen mit dem -Operator (Visual Basic)subtrahieren, wie im folgenden Beispiel veranschaulicht.

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

Die Negation verwendet auch den -Operator (Visual Basic),jedoch mit nur einem Operanden, wie im folgenden Beispiel veranschaulicht.

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

Multiplikation und Division verwenden den Operator * bzw. den Operator (Visual Basic), wie im folgenden Beispiel veranschaulicht.

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

Die Exponentierung verwendet den ^-Operator,wie im folgenden Beispiel veranschaulicht.

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

Die Division ganzer Zahlen wird mithilfe des -Operators (Visual Basic) ausgeführt. Die Ganzzahldivision gibt den Quotienten zurück, d.&a; die ganze Zahl, die angibt, wie oft der Divisor ohne Berücksichtigung des Rests in den Dividend dividiert werden kann. Sowohl der Divisor als auch der Dividend müssen integrale Typen ( SByte , , , , , , und ) für Byte diesen Operator Short UShort Integer UInteger Long ULong sein. Alle anderen Typen müssen zuerst in einen integralen Typ konvertiert werden. Im folgenden Beispiel wird die Division ganzzahliger Zahlen veranschaulicht.

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

Die Modulusarithmetik wird mit dem Mod-Operator ausgeführt. Dieser Operator gibt den Rest nach der Division des Divisors in den Dividend als ganzzahlig zurück. Wenn sowohl Divisor als auch Dividend integrale Typen sind, ist der zurückgegebene Wert integral. Wenn Divisor und Dividend Gleitkommatypen sind, ist der zurückgegebene Wert ebenfalls ein Gleitkommawert. In folgendem Beispiel wird dieses Verhalten veranschaulicht.

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.

Versuchte Division durch 0 (null)

Die Division durch 0 (null) hat je nach den beteiligten Datentypen unterschiedliche Ergebnisse. In integralen Divisionen ( , , , , , , ) löst SByte Byte .NET Framework Ausnahme Short UShort Integer UInteger Long ULong DivideByZeroException aus. In Divisionsvorgängen für den -Datentyp oder den -Datentyp löst Decimal Single .NET Framework eine Ausnahme DivideByZeroException aus.

In Gleitkommateilungen mit dem Datentyp wird keine Ausnahme ausgelöst, und das Ergebnis ist der Klassen member, der , oder darstellt, je nach Double NaN PositiveInfinity NegativeInfinity Dividend. In der folgenden Tabelle sind die verschiedenen Ergebnisse des Versuchs zusammengefasst, einen Wert durch Double 0 (null) zu dividieren.

Dividend-Datentyp Divisor-Datentyp Dividendwert Ergebnis
Double Double 0 NaN (keine rechendefinierte Zahl)
Double Double > 0 PositiveInfinity
Double Double < 0 NegativeInfinity

Wenn Sie eine Ausnahme DivideByZeroException abfangen, können Sie deren Member verwenden, um sie zu behandeln. Die -Eigenschaft enthält Message beispielsweise den Meldungstext für die Ausnahme. Weitere Informationen finden Sie unter Try...Catch...Finally-Anweisung.

Bit-Shift Vorgänge

Bei einem Bitverschiebungsvorgang wird eine arithmetische Verschiebung eines Bitmusters durchgeführt. Das Muster ist links im Operanden enthalten, während der Operand auf der rechten Seite die Anzahl der Positionen angibt, um die das Muster verschoben werden soll. Sie können das Muster mit dem Operator>> nach rechts oder mit dem Operator<< nach links verschieben.

Der Datentyp des Musteropernden muss SByte , , , , , , oder Byte Short UShort Integer UInteger Long ULong sein. Der Datentyp des Operanden für die Verschiebungsmenge muss sein Integer oder auf den -Wert ausweiten. Integer

Arithmetische Verschiebungen sind keine kreisförmigen Verschiebungen, was bedeutet, dass die bits, die von einem Ende des Ergebnisses verschoben werden, am anderen Ende nicht erneut eingeführt werden. Die durch eine Verschiebung frei werdenden Bitpositionen werden wie folgt festgelegt:

  • 0 für eine arithmetische Verschiebung nach links

  • 0 für eine arithmetische Verschiebung nach rechts einer positiven Zahl

  • 0 für eine arithmetische Verschiebung nach rechts eines Datentyps ohne Vorzeichen ( Byte , UShort , , UInteger ULong )

  • 1 für eine arithmetische Verschiebung nach rechts einer negativen Zahl ( SByte Short , , oder Integer Long )

Im folgenden Beispiel wird ein Wert Integer sowohl nach links als auch nach rechts verschoben.

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.

Arithmetische Verschiebungen generieren nie Überlaufausnahmen.

Bitweise Operationen

Neben logischen Operatoren führen , , und auch bitweise Arithmetik aus, wenn sie Not für numerische Werte verwendet Or And Xor werden. Weitere Informationen finden Sie unter "Bitweise Vorgänge" in Logische und bitweise Operatoren in Visual Basic.

Typsicherheit

Operanden sollten normalerweise denselben Typ haben. Wenn Sie z. B. eine Variable hinzufügen, sollten Sie sie einer anderen Variablen hinzufügen und das Ergebnis auch einer Variablen vom Integer Integer Typ Integer zuweisen.

Eine Möglichkeit, eine gute typsichere Codierung zu gewährleisten, ist die Verwendung der Option Strict-Anweisung. Wenn Sie Option Strict On festlegen, Visual Basic automatisch typsichere Konvertierungen ausgeführt. Wenn Sie beispielsweise versuchen, einer Variablen eine Variable hinzuzufügen und den Wert einer Variablen zu zuweisen, wird der Vorgang normal fortgesetzt, da ein Wert ohne Datenverlust in konvertiert Integer Double werden Double Integer Double kann. Typunsafe-Konvertierungen verursachen hingegen einen Compilerfehler mit Option Strict On . Wenn Sie beispielsweise versuchen, einer Variablen eine Variable hinzuzufügen und den Wert einer Variablen zu zuweisen, tritt ein Compilerfehler auf, da eine Variable nicht implizit in den Typ konvertiert werden Integer Double Integer Double Integer kann.

Wenn Sie jedoch festlegen, Visual Basic implizite ein schmale Konvertierungen, obwohl sie zu unerwarteten Datenverlusten oder Option Strict Off Genauigkeitsverlusten führen können. Aus diesem Grund wird empfohlen, beim Schreiben von Option Strict On Produktionscode zu verwenden. Weitere Informationen finden Sie unter Widening and Narrowing Conversions.

Siehe auch