Freigeben über


Datentypen von Operatorergebnissen (Visual Basic)

Visual Basic bestimmt den Ergebnisdatentyp eines Vorgangs basierend auf den Datentypen der Operanden. In einigen Fällen kann es sich hierbei um einen Datentyp mit einem größeren Bereich als bei beiden Operanden handelt.

Datentypbereiche

Die Bereiche der relevanten Datentypen, in der Reihenfolge von kleinstem bis zum größten, lauten wie folgt:

  • Boolescher Wert – zwei mögliche Werte

  • SByte, Byte – 256 mögliche integrale Werte

  • Kurz, UShort – 65.536 (6,5...E+4) mögliche integrale Werte

  • Ganze Zahl, UInteger — 4.294.967.296 (4,2...E+9) mögliche integrale Werte

  • Long, ULong – 18.446.744.073.709.551.615 (1,8...E+19) mögliche integrale Werte

  • Dezimal - 1,5...E+29 mögliche integrale Werte, maximaler Bereich 7,9...E+28 (Absoluter Wert)

  • Single - maximaler Bereich 3,4...E+38 (Absoluter Wert)

  • Double — maximum range 1,7...E+308 (absoluter Wert)

Weitere Informationen zu Visual Basic-Datentypen finden Sie unter Datentypen.

Wenn ein Operand als Nothing ausgewertet wird, behandeln die arithmetischen Visual Basic-Operatoren sie als Null.

Dezimalarithmetik

Beachten Sie, dass der Datentyp "Dezimal" weder Gleitkommawert noch ganze Zahl ist.

Wenn entweder +Operand eines , , *, , /oder Mod eines Vorgangs ist Decimal und der andere nicht Single oder Double, Visual Basic erweitert den anderen Operanden auf Decimal. Er führt den Vorgang in Decimalaus, und der Ergebnisdatentyp ist Decimal.

Floating-Point Arithmetik

Visual Basic führt die meisten Gleitkommaarithmetik in Double aus. Dies ist der effizienteste Datentyp für solche Vorgänge. Wenn jedoch ein Operand single ist und das andere nicht Doubleist, führt Visual Basic den Vorgang in Single. Er erweitert jeden Operanden nach Bedarf auf den entsprechenden Datentyp vor dem Vorgang, und das Ergebnis hat diesen Datentyp.

/ und ^ Operatoren

Der / Operator wird nur für die Datentypen Decimal, Single und Double definiert. Visual Basic erweitert jeden Operanden nach Bedarf auf den entsprechenden Datentyp vor dem Vorgang, und das Ergebnis hat diesen Datentyp.

Die folgende Tabelle zeigt die Ergebnisdatentypen für den / Operator. Beachten Sie, dass diese Tabelle symmetrisch ist; für eine bestimmte Kombination von Operanden-Datentypen ist der Ergebnisdatentyp unabhängig von der Reihenfolge der Operanden identisch.

Decimal Single Double Beliebiger ganzzahliger Typ
Decimal Dezimalzahl Ledig Doppelt Dezimalzahl
Single Ledig Ledig Doppelt Ledig
Double Doppelt Doppelt Doppelt Doppelt
Beliebiger ganzzahliger Typ Dezimalzahl Ledig Doppelt Doppelt

Der ^ Operator wird nur für den Double Datentyp definiert. Visual Basic erweitert jeden Operanden nach Bedarf vor Double dem Vorgang, und der Ergebnisdatentyp ist immer Double.

Arithmetische Ganze Zahl

Der Ergebnisdatentyp eines ganzzahligen Vorgangs hängt von den Datentypen der Operanden ab. Im Allgemeinen verwendet Visual Basic die folgenden Richtlinien zum Bestimmen des Ergebnisdatentyps:

  • Wenn beide Operanden eines binären Operators denselben Datentyp aufweisen, weist das Ergebnis diesen Datentyp auf. Eine Ausnahme ist Boolean, die erzwungen Shortwird.

  • Wenn ein nicht signierter Operand mit einem signierten Operanden teilnimmt, hat das Ergebnis einen signierten Typ mit mindestens so großem Bereich wie beide Operanden.

  • Andernfalls weist das Ergebnis in der Regel die größeren beiden Operandendatentypen auf.

Beachten Sie, dass der Ergebnisdatentyp möglicherweise nicht mit einem operanden Datentyp identisch ist.

Hinweis

Der Ergebnisdatentyp ist nicht immer groß genug, um alle möglichen Werte, die sich aus dem Vorgang ergeben, zu enthalten. Eine OverflowException Ausnahme kann auftreten, wenn der Wert für den Ergebnisdatentyp zu groß ist.

Unary + und – Operatoren

Die folgende Tabelle zeigt die Ergebnisdatentypen für die beiden unären Operatoren + und .

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Unär + Short SByte Byte Short UShort Integer UInteger Lang ULong
Unär Short SByte Short Short Integer Integer Lang Lang Dezimalzahl

<< und >> Operatoren

Die folgende Tabelle zeigt die Ergebnisdatentypen für die zwei Bitverschiebungsoperatoren << und >>. Visual Basic behandelt jeden Bitverschiebungsoperator als unärer Operator auf dem linken Operanden (das zu verschiebende Bitmuster).

Boolean SByte Byte Short UShort Integer UInteger Long ULong
<<, >> Short SByte Byte Short UShort Integer UInteger Lang ULong

Wenn der linke Operand Decimal, , Single, Doubleoder String, Visual Basic versucht, ihn Long vor dem Vorgang in zu konvertieren, und der Ergebnisdatentyp ist Long. Der rechte Operand (die Anzahl der zu verschiebenden Bitpositionen) muss oder ein Typ sein Integer , der Integerauf .

Binäre +-, -, *- und Mod-Operatoren

In der folgenden Tabelle sind die Ergebnisdatentypen für die Binären + und Operatoren sowie die * Operatoren Mod aufgeführt. Beachten Sie, dass diese Tabelle symmetrisch ist; für eine bestimmte Kombination von Operanden-Datentypen ist der Ergebnisdatentyp unabhängig von der Reihenfolge der Operanden identisch.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Short SByte Short Short Integer Integer Lang Lang Dezimalzahl
SByte SByte SByte Short Short Integer Integer Lang Lang Dezimalzahl
Byte Short Short Byte Short UShort Integer UInteger Lang ULong
Short Short Short Short Short Integer Integer Lang Lang Dezimalzahl
UShort Integer Integer UShort Integer UShort Integer UInteger Lang ULong
Integer Integer Integer Integer Integer Integer Integer Lang Lang Dezimalzahl
UInteger Lang Lang UInteger Lang UInteger Lang UInteger Lang ULong
Long Lang Lang Lang Lang Lang Lang Lang Lang Dezimalzahl
ULong Dezimalzahl Dezimalzahl ULong Dezimalzahl ULong Dezimalzahl ULong Dezimalzahl ULong

\Operator

Die folgende Tabelle zeigt die Ergebnisdatentypen für den \ Operator. Beachten Sie, dass diese Tabelle symmetrisch ist; für eine bestimmte Kombination von Operanden-Datentypen ist der Ergebnisdatentyp unabhängig von der Reihenfolge der Operanden identisch.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Short SByte Short Short Integer Integer Lang Lang Lang
SByte SByte SByte Short Short Integer Integer Lang Lang Lang
Byte Short Short Byte Short UShort Integer UInteger Lang ULong
Short Short Short Short Short Integer Integer Lang Lang Lang
UShort Integer Integer UShort Integer UShort Integer UInteger Lang ULong
Integer Integer Integer Integer Integer Integer Integer Lang Lang Lang
UInteger Lang Lang UInteger Lang UInteger Lang UInteger Lang ULong
Long Lang Lang Lang Lang Lang Lang Lang Lang Lang
ULong Lang Lang ULong Lang ULong Lang ULong Lang ULong

Wenn der Operand des Operators Decimal, Single oder Double ist, versucht Visual Basic, ihn vor dem \ Vorgang in Long zu konvertieren, und der Ergebnisdatentyp lautet Long.

Relationale und bitweise Vergleiche

Der Ergebnisdatentyp eines relationalen Vorgangs (=, <>, , <>, <=, , >=) ist immer Booleanboolescher Datentyp. Das gleiche gilt für logische Vorgänge (And, , AndAlso, Not, Or, OrElse, Xor) für Boolean Operanden.

Der Ergebnisdatentyp eines bitweisen logischen Vorgangs hängt von den Datentypen der Operanden ab. Beachten Sie, dass AndAlso und nur für Booleanvisual Basic definiert sind und OrElse jeder Operand nach Bedarf Boolean konvertiert wird, bevor er den Vorgang ausführt.

=, <>, , <, <>= und >= Operatoren

Wenn beide Operanden vorhanden sind Boolean, ist Visual Basic der Ansicht True , dass er kleiner als Falseist. Wenn ein numerischer Typ mit einem Stringverglichen wird, versucht Visual Basic, den StringDouble Wert vor dem Vorgang zu konvertieren. Ein Char oder Date Operand kann nur mit einem anderen Operanden desselben Datentyps verglichen werden. Der Ergebnisdatentyp ist immer Boolean.

Bitweise Nicht-Operator

In der folgenden Tabelle sind die Ergebnisdatentypen für den bitweisen Not Operator aufgeführt.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Not Boolescher Typ (Boolean) SByte Byte Short UShort Integer UInteger Lang ULong

Wenn der Operand , , , Doubleoder String, Visual Basic versucht, ihn Long vor dem Vorgang in zu konvertieren, und der Ergebnisdatentyp ist Long. SingleDecimal

Bitweise und Oder- und Xoroperatoren

In der folgenden Tabelle sind die Ergebnisdatentypen für die bitweisen AndOperatoren Orund Xor Operatoren aufgeführt. Beachten Sie, dass diese Tabelle symmetrisch ist; für eine bestimmte Kombination von Operanden-Datentypen ist der Ergebnisdatentyp unabhängig von der Reihenfolge der Operanden identisch.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Boolescher Typ (Boolean) SByte Short Short Integer Integer Lang Lang Lang
SByte SByte SByte Short Short Integer Integer Lang Lang Lang
Byte Short Short Byte Short UShort Integer UInteger Lang ULong
Short Short Short Short Short Integer Integer Lang Lang Lang
UShort Integer Integer UShort Integer UShort Integer UInteger Lang ULong
Integer Integer Integer Integer Integer Integer Integer Lang Lang Lang
UInteger Lang Lang UInteger Lang UInteger Lang UInteger Lang ULong
Long Lang Lang Lang Lang Lang Lang Lang Lang Lang
ULong Lang Lang ULong Lang ULong Lang ULong Lang ULong

Wenn ein Operand , , , Doubleoder String, Visual Basic versucht, ihn Long vor dem Vorgang in zu konvertieren, und der Ergebnisdatentyp ist identisch mit dem, wenn dieser Operand bereits war Long. SingleDecimal

Verschiedene Operatoren

Der & Operator wird nur für die Verkettung von String Operanden definiert. Visual Basic konvertiert jeden Operanden nach Bedarf vor String dem Vorgang, und der Ergebnisdatentyp ist immer String. Für die Zwecke des & Betreibers werden alle Umrechnungen als Verbreiterung betrachtet, auch wenn Option Strict dies String der Grund istOn.

Für die Is Operatoren müssen IsNot beide Operanden einen Verweistyp aufweisen. Der TypeOfAusdruck ...Is erfordert, dass der erste Operand ein Verweistyp und der zweite Operand der Name eines Datentyps sein soll. In all diesen Fällen lautet Booleander Ergebnisdatentyp .

Der Like Operator wird nur für den Musterabgleich von String Operanden definiert. Visual Basic versucht, jeden Operanden nach Bedarf vor String dem Vorgang zu konvertieren. Der Ergebnisdatentyp ist immer Boolean.

Siehe auch