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.
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
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 erzwungenShortwird.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.