Datentypen von Operatorergebnissen (Visual Basic)
Visual Basic bestimmt den Ergebnisdatentyp einer Operation basierend auf den Datentypen der Operanden. In einigen Fällen kann dies ein Datentyp sein, der einen größeren Bereich aufweist als einer der beiden Operanden.
Datentypbereiche
Die Bereiche der relevanten Datentypen, aufgeführt vom kleinsten bis zum größten, lauten wie folgt:
Boolean: 2 mögliche Werte
Integer, UInteger: 4.294.967.296 (4.2...E+9) mögliche Integralwerte
Long, ULong: 18.446.744.073.709.551.615 (1,8...E+19) mögliche Integralwerte
Decimal: 1.5...E+29 mögliche Integralwerte, 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 Visual Basic-Datentypen finden Sie unter Datentypen.
Wenn ein Operand als Nothing ausgewertet wird, behandeln die arithmetischen Operatoren von Visual Basic den Wert als 0.
Dezimalarithmetik
Beachten Sie, dass es sich beim Datentyp Decimal weder um eine Gleitkommazahl noch um eine ganze Zahl handelt.
Wenn einer der beiden Operanden einer +
-, –
-, *
-, /
- oder Mod
-Operation den Typ Decimal
aufweist und der andere nicht Single
oder Double
lautet, erweitert Visual Basic den anderen Operanden auf Decimal
. Die Operation wird in Decimal
ausgeführt, und der Datentyp des Ergebnisses lautet Decimal
.
Gleitkommaarithmetik
Visual Basic führt die meisten Gleitkommaberechnungen in Double aus, da dies der effizienteste Datentyp für solche Vorgänge ist. Wenn jedoch ein Operand den Typ Single aufweist und der andere nicht Double
lautet, führt Visual Basic die Operation in Single
aus. Dabei wird jeder Operand vor der Operation nach Bedarf auf den entsprechenden Datentyp erweitert, und das Ergebnis weist diesen Datentyp auf.
Operatoren / und ^
Der Operator /
ist nur für die Datentypen Decimal, Single und Double definiert. Visual Basic erweitert jeden Operanden vor der Operation nach Bedarf auf den entsprechenden Datentyp, und das Ergebnis weist diesen Datentyp auf.
Die folgende Tabelle zeigt die Ergebnisdatentypen für den Operator /
. Beachten Sie, dass diese Tabelle symmetrisch ist. Für eine gegebene Kombination von Operandendatentypen ist der Ergebnisdatentyp derselbe, unabhängig von der Reihenfolge der Operanden.
Decimal |
Single |
Double |
Beliebiger Ganzzahltyp | |
---|---|---|---|---|
Decimal |
Decimal | Single | Double | Decimal |
Single |
Single | Single | Double | Single |
Double |
Double | Double | Double | Double |
Beliebiger Ganzzahltyp | Decimal | Single | Double | Double |
Der Operator ^
ist nur für den Double
-Datentyp definiert. Visual Basic erweitert jeden Operanden vor der Operation nach Bedarf auf Double
, und der Ergebnisdatentyp lautet immer Double
.
Ganzzahlarithmetik
Der Ergebnisdatentyp einer Ganzzahloperation hängt von den Datentypen der Operanden ab. Im Allgemeinen verwendet Visual Basic die folgenden Richtlinien zur Bestimmung des Ergebnisdatentyps:
Wenn beide Operanden eines binären Operators denselben Datentyp aufweisen, hat auch das Ergebnis diesen Datentyp. Eine Ausnahme ist
Boolean
, bei demShort
erzwungen.Wenn ein Operand ohne Vorzeichen zusammen mit einem Operanden mit Vorzeichen verwendet wird, weist das Ergebnis einen Typ mit Vorzeichen auf, dessen Bereich mindestens so groß ist wie der der beiden Operanden.
Andernfalls weist das Ergebnis in der Regel den größeren der beiden Operandendatentypen auf.
Beachten Sie, dass der Datentyp des Ergebnisses möglicherweise nicht mit dem Datentyp der beiden Operanden übereinstimmt.
Hinweis
Der Ergebnisdatentyp ist nicht immer groß genug, um alle möglichen Werte zu enthalten, die sich aus der Operation ergeben. Es kann eine OverflowException-Ausnahme auftreten, wenn der Wert zu groß für den Ergebnisdatentyp ist.
Unäre Operatoren + und -
Die folgende Tabelle zeigt die Ergebnisdatentypen für die beiden unären Operatoren, +
und –
.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Unärer Operator + |
Short | SByte | Byte | Short | UShort | Integer | UInteger | Long | ULong |
Unärer Operator – |
Short | SByte | Short | Short | Integer | Integer | Long | Long | Decimal |
Operatoren << und >>
Die folgende Tabelle zeigt die Ergebnisdatentypen für die beiden Bitverschiebungsoperatoren, <<
und >>
. Visual Basic behandelt jeden Bitverschiebungsoperator 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 Decimal
, Single
, Double
oder String
lautet, versucht Visual Basic, diesen vor der Operation in Long
zu konvertieren, und der Ergebnisdatentyp lautet Long
. Der rechte Operand (die Anzahl der zu verschiebenden Bitpositionen) muss Integer
lauten oder ein Typ sein, der auf Integer
erweitert wird.
Binäre Operatoren +, - , * und Mod-Operatoren
Die folgende Tabelle zeigt die Ergebnisdatentypen für die binären Operatoren +
und –
sowie die Operatoren *
und Mod
. Beachten Sie, dass diese Tabelle symmetrisch ist. Für eine gegebene Kombination von Operandendatentypen ist der Ergebnisdatentyp derselbe, 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
Die folgende Tabelle zeigt die Ergebnisdatentypen für den Operator \
. Beachten Sie, dass diese Tabelle symmetrisch ist. Für eine gegebene Kombination von Operandendatentypen ist der Ergebnisdatentyp derselbe, 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 einer der Operanden des \
-Operators Decimal, Single oder Double lautet, versucht Visual Basic, ihn vor der Operation in Long zu konvertieren, und der Ergebnisdatentyp ist Long
.
Relationale und bitweise Vergleiche
Der Ergebnisdatentyp einer relationalen Operation (=
, <>
, <
, >
, <=
, >=
) ist immer der Boolean
Boolean-Datentyp. Dasselbe gilt für logische Operationen (And
, AndAlso
, Not
, Or
, OrElse
, Xor
) für Boolean
-Operanden.
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 und Visual Basic jeden Operanden vor der Ausführung der Operation nach Bedarf in Boolean
konvertiert.
Operatoren =, <>, <, >, <= und >=
Wenn beide Operanden Boolean
lauten, geht Visual Basic davon aus, dass True
kleiner ist als False
. Wenn ein numerischer Typ mit einem String
-Typ verglichen wird, versucht Visual Basic, den String
-Typ vor der Operation in Double
zu konvertieren. Ein Char
- oder Date
-Operand kann nur mit einem anderen Operanden desselben Datentyps verglichen werden. Der Ergebnisdatentyp lautet immer Boolean
.
Bitweiser Not-Operator
Die folgende Tabelle zeigt die Ergebnisdatentypen für den bitweisen Operator Not
.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Not |
Boolean | SByte | Byte | Short | UShort | Integer | UInteger | Long | ULong |
Wenn der Operand Decimal
, Single
, Double
oder String
lautet, versucht Visual Basic, diesen vor der Operation in Long
zu konvertieren, und der Ergebnisdatentyp lautet Long
.
Bitweise And-, Or- und Xor-Operatoren
Die folgende Tabelle zeigt die Ergebnisdatentypen für die bitweisen Operatoren And
, Or
und Xor
. Beachten Sie, dass diese Tabelle symmetrisch ist. Für eine gegebene Kombination von Operandendatentypen ist der Ergebnisdatentyp derselbe, 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 Decimal
, Single
, Double
oder String
lautet, versucht Visual Basic, ihn vor der Operation in Long
zu konvertieren, und der Ergebnisdatentyp entspricht dem, der für den Operanden Long
gilt.
Verschiedene Operatoren
Der &
-Operator ist nur für die Verkettung von String
-Operanden definiert. Visual Basic konvertiert jeden Operanden vor der Operation nach Bedarf in String
, und der Datentyp des Ergebnisses lautet immer String
. Für den Operator &
werden alle Konvertierungen in String
als Erweiterung betrachtet, auch wenn Option Strict
den Wert On
aufweist.
Bei den Operatoren Is
und IsNot
müssen beide Operanden einen Verweistyp verwenden. Der Ausdruck TypeOf
...Is
erfordert, dass der erste Operand ein Verweistyp und der zweite Operand der Name eines Datentyps ist. In all diesen Fällen lautet der Ergebnisdatentyp Boolean
.
Der Operator Like
ist nur für den Musterabgleich von String
-Operanden definiert. Visual Basic versucht, jeden Operanden vor der Operation nach Bedarf in String
zu konvertieren. Der Ergebnisdatentyp lautet immer Boolean
.
Siehe auch
- Datentypen
- Operatoren und Ausdrücke
- Arithmetische Operatoren in Visual Basic
- Comparison Operators in Visual Basic
- Operatoren
- Operatorrangfolge in Visual Basic
- Nach Funktionalität sortierte Operatoren
- Arithmetic Operators (Arithmetische Operatoren)
- Comparison Operators (Vergleichsoperatoren)
- Option Strict-Anweisung