Arithmetische Operatoren in Visual Basic
Arithmetische Operatoren werden für viele bekannte arithmetische Operationen verwendet, die numerische Werte berechnen, die durch Literale, Variablen, andere Ausdrücke, Funktions- und Eigenschaftenaufrufe sowie Konstanten dargestellt werden. Zu den arithmetischen Operatoren zählen auch die Bitschiebeoperatoren, die auf der Ebene der einzelnen Bits der Operanden ausgeführt werden und ihre Bitmuster nach links oder rechts verschieben.
Arithmetische Operationen
Sie können mit dem +-Operator (Visual Basic) zwei Werte in einem Ausdruck addieren oder mit dem --Operator (Visual Basic) einen Wert vom anderen subtrahieren, wie im folgenden Beispiel veranschaulicht.
Dim x As Integer
x = 67 + 34
x = 32 - 12
Der --Operator (Visual Basic) wird auch für die Negation verwendet, jedoch mit nur einem Operanden, wie im folgenden Beispiel veranschaulicht.
Dim x As Integer = 65
Dim y As Integer
y = -x
Für Multiplikation und Division wird der *-Operator (Visual Basic) bzw. der /-Operator (Visual Basic) verwendet, wie im folgenden Beispiel veranschaulicht.
Dim y As Double
y = 45 * 55.23
y = 32 / 23
Für die Potenzierung wird der ^-Operator (Visual Basic) verwendet, 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 erfolgt mit dem \-Operator (Visual Basic). Bei der Division ganzer Zahlen wird der Quotient zurückgegeben, also die ganze Zahl, die angibt, wie oft der Dividend durch den Divisor ohne Rest geteilt werden kann. Für diesen Operator müssen Divisor und Dividend einen ganzzahligen Datentyp (SByte, Byte, Short, UShort, Integer, UInteger, Long und ULong) aufweisen. Alle anderen Typen müssen zuerst in einen ganzzahligen Typ konvertiert werden. Im folgenden Beispiel wird die Division ganzer Zahlen veranschaulicht.
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
Modulo-Arithmetik wird mit dem Operator Mod(Visual Basic) ausgeführt. Dieser Operator gibt den Rest zurück, nachdem der Dividend mit einer durch eine ganze Zahl angegegebenen Häufigkeit durch den Divisor geteilt wurde. Wenn es sich bei dem Divisor und dem Dividend um ganzzahlige Typen handelt, ist der zurückgegebene Wert eine ganze Zahl. Wenn es sich bei dem Divisor und dem Dividend um einen Gleitkommatyp handelt, ist der zurückgegebene Wert ebenfalls ein Gleitkommatyp. Im folgenden 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 kann abhängig von den verwendeten Datentypen unterschiedliche Ergebnisse erzielen. Bei der ganzzahligen Division (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong), löst .NET Framework eine DivideByZeroException-Ausnahme aus. Bei Divisionen mit dem Decimal-Datentyp oder dem Single-Datentyp löst .NET Framework ebenfalls eine DivideByZeroException-Ausnahme aus.
Bei Gleitkommadivisionen mit dem Double-Datentyp wird keine Ausnahme ausgelöst, und das Ergebnis ist der Klassenmember, der je nach Dividend NaN, PositiveInfinity oder NegativeInfinity darstellt. In der folgenden Tabelle sind die verschiedenen Ergebnisse beim Dividieren eines Double-Werts durch 0 (null) zusammengefasst.
Dividenddatentyp |
Divisordatentyp |
Dividendwert |
Ergebnis |
Double |
Double |
0 |
NaN (keine mathematisch definierte Zahl) |
Double |
Double |
> 0 |
|
Double |
Double |
< 0 |
Wenn Sie eine DivideByZeroException-Ausnahme abfangen, können Sie deren Member zum Beheben der Ausnahme verwenden. Beispielsweise enthält die Message-Eigenschaft den Meldungstext für die Ausnahme. Weitere Informationen finden Sie unter Try...Catch...Finally-Anweisung (Visual Basic).
Bitschiebeoperationen
Eine Bitschiebeoperation führt eine arithmetische Verschiebung eines Bitmusters aus. Der Operand auf der linken Seite enthält das Muster, während der Operand auf der rechten Seite die Anzahl der Positionen angibt, um die das Muster verschoben werden soll. Das Muster kann mit dem >>-Operator (Visual Basic) nach rechts und mit dem <<-Operator (Visual Basic) nach links verschoben werden.
Der Datentyp des Operanden für das Muster muss SByte, Byte, Short, UShort, Integer, UInteger, Long oder ULong sein. Der Datentyp des Operanden für die Verschiebung muss Integer sein oder auf Integer erweitert werden.
Arithmetische Verschiebungen sind nicht zyklisch, d. h., die Bits, die an einem Ende des Ergebnisses durch die Verschiebung herausfallen, werden nicht am anderen Ende wieder eingefügt. Die Bitpositionen, die durch eine Verschiebung freiwerden, werden wie folgt festgelegt:
0 für eine arithmetische Verschiebung nach links
0 für die arithmetische Verschiebung einer positiven Zahl nach rechts
0 für die arithmetische Verschiebung nach rechts eines Datentyps ohne Vorzeichen (Byte, UShort, UInteger, ULong)
1 für die arithmetische Verschiebung einer negativen Zahl (SByte, Short, Integer oder Long) nach rechts
Im folgenden Beispiel wird ein Integer-Wert nach rechts und links 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 niemals Überlaufausnahmen.
Bitweise Operationen
Bei Not, Or, And und Xor handelt es sich nicht nur um logische Operatoren. Sie führen außerdem bitweise arithmetische Operationen aus, wenn sie mit numerischen Werten verwendet werden. Weitere Informationen finden Sie in Logische und bitweise Operatoren in Visual Basic unter "Bitweise Operationen".
Typsicherheit
Operanden sollten normalerweise vom selben Typ sein. Wenn Sie z. B. eine Addition mit einer Integer-Variablen ausführen, addieren Sie sie zu einer anderen Integer-Variablen und weisen das Ergebnis ebenfalls einer Variablen vom Typ Integer zu.
Eine Möglichkeit, eine gute, typsichere Codierung zu garantieren, ist die Verwendung der Option Strict-Anweisung. Wenn Sie Option Strict On festlegen, führt Visual Basic automatisch typsichere Konvertierungen aus. Wenn Sie beispielsweise versuchen, eine Integer-Variable zu einer Double-Variablen zu addieren und den Wert einer Double-Variablen zuzuweisen, wird der Vorgang normal ausgeführt, weil ein Integer-Wert ohne Datenverlust in Double konvertiert werden kann. Typunsichere Konvertierungen verursachen hingegen mit Option Strict On einen Compilerfehler. Wenn Sie beispielsweise versuchen, eine Integer-Variable zu einer Double-Variablen zu addieren und den Wert einer Integer-Variablen zuzuweisen, wird ein Compilerfehler verursacht, weil eine Double-Variable nicht implizit in den Typ Integer konvertiert werden kann.
Wenn Sie Option Strict Off festlegen, lässt Visual Basic jedoch implizite Einschränkungskonvertierungen zu, obwohl sie zu unerwartetem Daten- oder Genauigkeitsverlust führen können. Daher empfiehlt es sich, beim Schreiben von Produktionscode Option Strict On zu verwenden. Weitere Informationen finden Sie unter Erweiternde und eingrenzende Konvertierungen (Visual Basic).
Siehe auch
Referenz
Arithmetische Operatoren (Visual Basic)
Bitschiebeoperatoren (Visual Basic)
Konzepte
Vergleichsoperatoren in Visual Basic
Verkettungsoperatoren in Visual Basic