Datentypen von Operatorergebnissen
Aktualisiert: November 2007
Visual Basic bestimmt den Ergebnisdatentyp einer Operation anhand der Datentypen der Operanden. In einigen Fällen kann der Ergebnisdatentyp einen größeren Bereich haben als die Datentypen der beiden Operanden.
Datentypbereiche
Nachfolgend sind die Bereiche der relevanten Datentypen in der Reihenfolge von kleinsten zum größten aufgeführt:
Boolean – zwei mögliche Werte
Short, UShort – 65.536 (6,5... E+4) mögliche ganzzahlige Werte
Integer, UInteger – 4.294.967.296 (4,2... E+9) mögliche ganzzahlige Werte
Long, ULong – 18.446.744.073.709.551.615 (1,8... E+19) mögliche ganzzahlige Werte
Decimal – 1,5... E+29 mögliche ganzzahlige Werte, maximaler Bereich 7,9... E+28 (absoluter Wert)
Single – maximaler Bereich 3,4... E+38 (absoluter Wert)
Double – maximaler Bereich 1,7... E+308 (absoluter Wert)
Weitere Informationen zu den Datentypen von Visual Basic finden Sie unter Datentyp: Zusammenfassung (Visual Basic).
Wenn ein Operand Nothing ergibt, wird er von den arithmetischen Operatoren in Visual Basic wie 0 (null) behandelt.
Arithmetische Operationen mit dem Decimal-Datentyp
Beachten Sie, dass der Decimal-Datentyp weder Gleitkommazahlen noch ganze Zahlen darstellt.
Wenn ein Operand einer +-, –-, *-, /- oder Mod-Operation den Decimal-Datentyp aufweist und der andere Operand nicht den Single-Datentyp oder den Double-Datentyp, dann erweitert Visual Basic den anderen Operanden zum Decimal-Datentyp. Die Operation wird mit dem Decimal-Datentyp ausgeführt, und der Ergebnisdatentyp ist Decimal.
Gleitkommaarithmetik
Visual Basic führt den Großteil der Gleitkommaarithmetik mit dem Double-Datentyp aus, der für solche Operationen am effizientesten ist. Wenn ein Operand jedoch den Single-Datentyp und der andere den Double-Datentyp hat, führt Visual Basic die Operation unter Verwendung des Single-Datentyps aus. Vor der Operation wird jeder Operand nach Bedarf zum geeigneten Datentyp erweitert, und das Ergebnis hat diesen Datentyp.
Operatoren / und ^
Der /-Operator ist nur für die Datentypen Decimal, Single und Double definiert. Vor der Ausführung der Operation erweitert Visual Basic jeden Operanden bei Bedarf zum geeigneten Datentyp. Das Ergebnis weist den betreffenden Datentyp auf.
In der folgenden Tabelle werden die Ergebnisdatentypen für den /-Operator aufgeführt. Beachten Sie, dass diese Tabelle symmetrisch ist. Der Datentyp des Ergebnisses ist für jede gegebene Kombination von Operandendatentypen der gleiche und zwar unabhängig von der Reihenfolge der Operanden.
Decimal |
Single |
Double |
Ein beliebiger ganzzahliger Typ |
|
Decimal |
Decimal |
Single |
Double |
Double |
Single |
Single |
Single |
Double |
Double |
Double |
Double |
Double |
Double |
Double |
Ein beliebiger ganzzahliger Typ |
Double |
Double |
Double |
Double |
Der ^-Operator ist nur für den Double-Datentyp definiert. Visual Basic erweitert den Operanden vor der Operation bei Bedarf zu Double. Der Ergebnisdatentyp ist stets vom Typ Double.
Ganzzahlarithmetik
Der Ergebnisdatentyp einer Ganzzahloperation hängt von den Datentypen der Operanden ab. Im Allgemeinen wird in Visual Basic der Ergebnisdatentyp nach folgenden Richtlinien bestimmt:
Wenn beide Operanden eines binären Operators den gleichen Datentyp haben, weist das Ergebnis diesen Datentyp auf. Eine Ausnahme ist der Boolean-Datentyp, der in Short umgewandelt wird.
Wenn die Operation einen Operanden ohne Vorzeichen und einen Operanden mit Vorzeichen beinhaltet, ist das Ergebnis ein Datentyp mit Vorzeichen und einem Bereich, der mindestens genauso groß ist wie jeder der beiden Operanden.
Andernfalls hat das Ergebnis normalerweise den größeren Datentyp der beiden Operandendatentypen.
Beachten Sie, dass der Ergebnisdatentyp nicht dem Datentyp eines der beiden Operanden entsprechen muss.
Hinweis: |
---|
Der Ergebnisdatentyp ist nicht immer groß genug, um alle möglichen Ergebniswerte der Operation speichern zu können. Es kann eine OverflowException-Ausnahme auftreten, wenn der Wert für den Ergebnisdatentyp zu groß ist. |
Unäre Operatoren + und –
Die folgende Tabelle enthält die Ergebnisdatentypen für die beiden unären Operatoren + und –.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Unäres + |
Short |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Unäres – |
Short |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
Operatoren << und >>
Die folgende Tabelle enthält die Ergebnisdatentypen für den <<-Bitschiebeoperator und den >>-Bitverschiebungsoperator. Visual Basic behandelt jeden Bitschiebeoperator als unären Operator für den linken Operanden (das zu verschiebende Bitmuster).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
<<, >> |
Short |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Wenn der linke Operand den Datentyp Decimal, Single, Double oder String hat, versucht Visual Basic, den Datentyp vor der Operation in Long umzuwandeln. Das Ergebnis hat den Long-Datentyp. Der rechte Operand (die Anzahl der zu verschiebenden Bitpositionen) muss den Integer-Datentyp oder einen Typ haben, der zu Integer erweitert werden kann.
Binäre Operatoren + und –, *- und Mod-Operator
In der folgenden Tabelle sind die Ergebnisdatentypen der binären Operatoren + und – sowie des *-Operators und des Mod-Operators aufgeführt. Beachten Sie, dass diese Tabelle symmetrisch ist. Der Datentyp des Ergebnisses ist für jede gegebene Kombination von Operandendatentypen der gleiche und zwar unabhängig von der Reihenfolge der Operanden.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Boolean |
Short |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
SByte |
SByte |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
Byte |
Short |
Short |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Short |
Short |
Short |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
UShort |
Integer |
Integer |
UShort |
Integer |
UShort |
Integer |
UInteger |
Long |
ULong |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Long |
Long |
Decimal |
UInteger |
Long |
Long |
UInteger |
Long |
UInteger |
Long |
UInteger |
Long |
ULong |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Decimal |
ULong |
Decimal |
Decimal |
ULong |
Decimal |
ULong |
Decimal |
ULong |
Decimal |
ULong |
Operator \
In der folgenden Tabelle werden die Ergebnisdatentypen für den \-Operator aufgeführt. Beachten Sie, dass diese Tabelle symmetrisch ist. Der Datentyp des Ergebnisses ist für jede gegebene Kombination von Operandendatentypen der gleiche und zwar unabhängig von der Reihenfolge der Operanden.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Boolean |
Short |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
SByte |
SByte |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
Byte |
Short |
Short |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Short |
Short |
Short |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
UShort |
Integer |
Integer |
UShort |
Integer |
UShort |
Integer |
UInteger |
Long |
ULong |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Long |
Long |
Long |
UInteger |
Long |
Long |
UInteger |
Long |
UInteger |
Long |
UInteger |
Long |
ULong |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
ULong |
Long |
Long |
ULong |
Long |
ULong |
Long |
ULong |
Long |
ULong |
Wenn ein Operand des \-Operators den Datentyp Decimal, Single oder Double hat, versucht Visual Basic vor der Operation, diesen Datentyp in Long umzuwandeln. Der Ergebnisdatentyp ist Long.
Relationale und bitweise Vergleiche
Der Ergebnisdatentyp einer relationalen Operation (=, <>, <, >, <=, >=) ist immer BooleanBoolean-Datentyp (Visual Basic). Dasselbe gilt für logische Operationen (And, AndAlso, Not, Or, OrElse, Xor) mit Operanden vom Boolean-Datentyp.
Der Ergebnisdatentyp einer bitweisen logischen Operation hängt von den Datentypen der Operanden ab. Beachten Sie, dass AndAlso und OrElse nur für Boolean definiert sind. Visual Basic konvertiert jeden Operanden bei Bedarf in Boolean, bevor die Operation ausgeführt wird.
Operatoren =, <>, <, >, <= und >=
Wenn beide Operanden vom Typ Boolean sind, gilt in Visual Basic der Wert True als kleiner als der Wert False. Wenn ein numerischer Typ mit einem String verglichen wird, versucht Visual Basic vor der Operation, den String-Operanden in den Double-Datentyp zu konvertieren. Ein Operand vom Typ Char oder Date kann nur mit einem anderen Operanden des gleichen Datentyps verglichen werden. Das Ergebnis hat immer den Boolean-Datentyp.
Bitweiser Not-Operator
In der folgenden Tabelle werden die Ergebnisdatentypen für den bitweisen Not-Operator aufgeführt.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Not |
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Wenn der Operand den Datentyp Decimal, Single, Double oder String hat, versucht Visual Basic, den Datentyp vor der Operation in Long umzuwandeln. Das Ergebnis hat den Long-Datentyp.
Bitweise Operatoren And, Or und Xor
In der folgenden Tabelle werden die Ergebnisdatentypen für die bitweisen Operatoren And, Or und Xor aufgeführt. Beachten Sie, dass diese Tabelle symmetrisch ist. Der Datentyp des Ergebnisses ist für jede gegebene Kombination von Operandendatentypen der gleiche und zwar unabhängig von der Reihenfolge der Operanden.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Boolean |
Boolean |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
SByte |
SByte |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
Byte |
Short |
Short |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Short |
Short |
Short |
Short |
Short |
Integer |
Integer |
Long |
Long |
Long |
UShort |
Integer |
Integer |
UShort |
Integer |
UShort |
Integer |
UInteger |
Long |
ULong |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Integer |
Long |
Long |
Long |
UInteger |
Long |
Long |
UInteger |
Long |
UInteger |
Long |
UInteger |
Long |
ULong |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
Long |
ULong |
Long |
Long |
ULong |
Long |
ULong |
Long |
ULong |
Long |
ULong |
Wenn ein Operand den Datentyp Decimal, Single, Double oder String hat, versucht Visual Basic, den Datentyp vor der Operation in Long umzuwandeln. Das Ergebnis hat den Datentyp, der sich ergäbe, wenn der Operand bereits den Long-Datentyp gehabt hätte.
Verschiedene Operatoren
Der &-Operator ist nur für die Verkettung von String-Operanden definiert. Visual Basic wandelt den Datentyp jedes Operanden vor der Operation bei Bedarf in String um. Das Ergebnis hat stets den String-Datentyp. Alle im Zusammenhang mit dem &-Operator durchgeführten Konvertierungen in den String-Datentyp werden als erweiternde Konvertierungen betrachtet, auch wenn Option Strict den Wert On hat.
Beim Is-Operator und beim IsNot-Operator müssen beide Operanden zum gleichen Verweistyp gehören. Beim TypeOf...Is-Ausdruck muss der erste Operand zu einem Verweistyp gehören und der zweite Operand den Namen eines Datentyps enthalten. In allen diesen Fällen ist der Ergebnisdatentyp Boolean.
Der Like-Operator ist nur für Mustervergleiche mit String-Operanden definiert. Visual Basic versucht, jeden Operanden bei Bedarf vor der Operation in den String-Datentyp zu konvertieren. Das Ergebnis hat immer den Boolean-Datentyp.
Siehe auch
Konzepte
Operatoren und Ausdrücke in Visual Basic
Arithmetische Operatoren in Visual Basic
Vergleichsoperatoren in Visual Basic
Referenz
Datentyp: Zusammenfassung (Visual Basic)
Operatorrangfolge in Visual Basic
Operatoren sortiert nach Funktionalität
Arithmetische Operatoren (Visual Basic)
Vergleichsoperatoren (Visual Basic)