Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Arithmetische Operatoren werden verwendet, um viele der vertrauten arithmetischen Vorgänge auszuführen, die die Berechnung numerischer Werte umfassen, die durch Literale, Variablen, andere Ausdrücke, Funktions- und Eigenschaftsaufrufe und Konstanten dargestellt werden. Auch 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 Vorgänge
Sie können zwei Werte in einem Ausdruck zusammen mit dem +-Operator hinzufü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. / (Visual Basic), wie das folgende Beispiel zeigt.
Dim y As Double
y = 45 * 55.23
y = 32 / 23
Die Exponentiation 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).
Ganzzahldivision wird mit dem \-Operator (Visual Basic) durchgeführt. Die Ganzzahldivision gibt den Quotienten zurück, d. h. die ganze Zahl, die die Häufigkeit darstellt, mit der der Dividend ohne Rest durch den Divisor geteilt werden kann. Sowohl der Divisor als auch die Dividende müssen integrale Typen (SByte
, Byte
, Short
, UShort
Integer
, , UInteger
, und Long
ULong
) für diesen Operator sein. Alle anderen Typen müssen zuerst in einen integralen Typ konvertiert werden. Im folgenden Beispiel wird eine ganzzahlige Division veranschaulicht.
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
Modulusarithmetik wird mithilfe des Mod-Operators ausgeführt. Dieser Operator gibt den Rest zurück, nachdem der Dividend mit integraler Häufigkeit durch den Divisor geteilt wurde. Wenn sowohl Divisor als auch Dividende integrale Typen sind, ist der zurückgegebene Wert integral. Wenn Divisor und Dividend Gleitkommatypen sind, ist der zurückgegebene Wert ebenfalls ein Gleitkommawert. 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 null (0)
Die Division nach Null hat je nach den beteiligten Datentypen unterschiedliche Ergebnisse. In integralen Abteilungen (SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
, ULong
) löst die .NET Framework eine DivideByZeroException Ausnahme aus. Bei Divisionen des Decimal
- oder Single
-Datentyps löst das .NET Framework auch eine DivideByZeroException-Ausnahme aus.
In Gleitkommateilungen, die den Double
-Datentyp einbeziehen, wird keine Ausnahme ausgelöst, und das Ergebnis ist, abhängig vom Dividendenbetrag, das Klassenmitglied, das NaN, PositiveInfinity oder NegativeInfinity darstellt. In der folgenden Tabelle sind die verschiedenen Ergebnisse zusammengefasst, in der versucht wird, einen Double
Wert durch Null zu dividieren.
Dividendendatentyp | Divisor-Datentyp | Dividendenwert | Ergebnis |
---|---|---|---|
Double |
Double |
0 | NaN (keine mathematisch definierte Zahl) |
Double |
Double |
> 0 | PositiveInfinity |
Double |
Double |
< 0 | NegativeInfinity |
Wenn Sie eine DivideByZeroException-Ausnahme abfangen, können Sie deren Member verwenden, um sie zu behandeln. Beispielsweise enthält die Message Eigenschaft den Nachrichtentext für die Ausnahme. Weitere Informationen finden Sie unter Try...Catch...Finally-Anweisung.
Bitverschiebungsoperationen
Ein Bitverschiebungsvorgang führt eine arithmetische Verschiebung an einem Bitmuster aus. Das Muster ist im Operanden auf der linken Seite enthalten, während der Operand auf der rechten Seite die Anzahl der Positionen angibt, um das Muster zu verschieben. Sie können das Muster mit dem >> Operator nach rechts oder nach links mit dem << Operator verschieben.
Der Datentyp des Musteroperanden muss SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
, oder ULong
. Der Datentyp des Verschiebungsbetragsoperanden muss Integer
sein oder auf Integer
erweitert werden.
Arithmetische Verschiebungen sind nicht kreisförmig, was bedeutet, dass die Bits, die von einem Ende des Ergebnisses entfernt werden, nicht am anderen Ende wieder angefügt werden. Die durch eine Schicht freigestellten Bitpositionen werden wie folgt festgelegt:
0 für eine arithmetische Linksverschiebung
0 für eine arithmetische rechte Verschiebung einer positiven Zahl
0 für eine arithmetische rechte Verschiebung eines nicht signierten Datentyps (
Byte
,UShort
,UInteger
,ULong
)1 für eine arithmetische Rechtsverschiebung einer negativen Zahl (
SByte
,Short
,Integer
, oderLong
)
Im folgenden Beispiel wird ein Integer
Wert 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 lösen niemals Überlauf-Ausnahmen aus.
Bitweise Operationen
Zusätzlich zu ihrer Rolle als logische Operatoren führen Not
, Or
, And
und Xor
auch bitweise Arithmetik aus, wenn sie auf numerische Werte angewendet werden. Weitere Informationen finden Sie unter "Bitweise Vorgänge" in logischen und bitweisen Operatoren in Visual Basic.
Typsicherheit
Operanden sollten normalerweise vom selben Typ sein. Wenn Sie zum Beispiel eine Addition mit einer Integer
Variable ausführen, sollten Sie sie mit einer anderen Integer
Variable addieren und das Ergebnis einer Variablen vom Typ Integer
zuweisen.
Eine Möglichkeit, eine gute typsichere Codierungspraxis zu gewährleisten, besteht darin, die Option Strict-Anweisung zu verwenden. Wenn Sie festlegen Option Strict On
, führt Visual Basic automatisch typsichere Konvertierungen aus. Wenn Sie beispielsweise versuchen, einer Variablen eine Integer
Double
Variable hinzuzufügen und den Wert einer Double
Variablen zuzuweisen, wird der Vorgang normal fortgesetzt, da ein Wert ohne Datenverlust in einen Integer
Wert konvertiert Double
werden kann. Typunsichere Konvertierungen verursachen dagegen einen Compilerfehler mit Option Strict On
. Wenn Sie beispielsweise versuchen, eine Integer
-Variable zu einer Double
-Variable hinzuzufügen und den Wert einer Integer
-Variablen zuzuweisen, ergibt sich ein Compilerfehler, da eine Double
-Variable nicht implizit in den Typ Integer
konvertiert werden kann.
Wenn Sie jedoch festlegen Option Strict Off
, ermöglicht Visual Basic implizite Eingrenzungskonvertierungen, obwohl sie zu einem unerwarteten Verlust von Daten oder Genauigkeit führen können. Aus diesem Grund wird empfohlen, beim Schreiben von Produktionscode zu verwenden Option Strict On
. Weitere Informationen finden Sie unter Widening and Narrowing Conversions.