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

  • SByte, Byte: 256 mögliche Integralwerte

  • Short, UShort: 65.536 (6,5...E+4) mögliche Integralwerte

  • 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 dem Short 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 BooleanBoolean-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