Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Visual Basic określa typ danych wynikowych operacji na podstawie typów danych operandów. W niektórych przypadkach może to być typ danych o większym zakresie niż w przypadku dowolnego operandu.
Zakresy typów danych
Zakresy odpowiednich typów danych, w kolejności od najmniejszej do największej, są następujące:
Wartość logiczna — dwie możliwe wartości
Krótki, UShort — 65 536 (6,5...E+4) możliwe wartości całkowite
Liczba całkowita, liczba całkowita U — 4,294,967,296 (4.2...E+9) możliwe wartości całkowite
Long, ULong — 18,446,744,073,709,551,615 (1,8...E+19) możliwe wartości całkowite
Dziesiętne — 1,5...E+29 możliwych wartości całkowitych, maksymalny zakres 7,9...E+28 (wartość bezwzględna)
Pojedynczy — maksymalny zakres 3,4...E+38 (wartość bezwzględna)
Podwójne — maksymalny zakres 1,7...E+308 (wartość bezwzględna)
Aby uzyskać więcej informacji na temat typów danych języka Visual Basic, zobacz Typy danych.
Jeśli operand zwróci wartość Nothing, operatory arytmetyczne języka Visual Basic traktują je jako zero.
Arytmetyka dziesiętna
Należy pamiętać, że typ danych dziesiętnych nie jest ani zmiennoprzecinkowym, ani liczbą całkowitą.
Jeśli operand operacji +, , –*, /lub Mod jest Decimal inny, a drugi nie Single lub Double, Visual Basic rozszerza inny operand na Decimal. Wykonuje operację w pliku Decimal, a typ danych wynikowych to Decimal.
arytmetyka Floating-Point
Język Visual Basic wykonuje większość arytmetyki zmiennoprzecinkowych w podwójnej, która jest najbardziej wydajnym typem danych dla takich operacji. Jeśli jednak jeden operand ma wartość Pojedyncza , a drugi nie Double, program Visual Basic wykonuje operację w programie Single. Rozszerza on każdy operand zgodnie z potrzebami do odpowiedniego typu danych przed operacją, a wynik ma ten typ danych.
/ i ^ Operatory
Operator / jest definiowany tylko dla typów danych Liczba dziesiętna, Pojedyncza i Podwójna . Język Visual Basic rozszerza każdy operand zgodnie z potrzebami do odpowiedniego typu danych przed operacją, a wynik ma ten typ danych.
W poniższej tabeli przedstawiono typy danych wyników dla / operatora. Należy pamiętać, że ta tabela jest symetryczna; dla danej kombinacji typów danych operandu typ danych wynikowych jest taki sam, niezależnie od kolejności operandów.
Decimal |
Single |
Double |
Dowolny typ liczby całkowitej | |
|---|---|---|---|---|
Decimal |
Liczba dziesiętna | Singiel | Podwójny | Liczba dziesiętna |
Single |
Singiel | Singiel | Podwójny | Singiel |
Double |
Podwójny | Podwójny | Podwójny | Podwójny |
| Dowolny typ liczby całkowitej | Liczba dziesiętna | Singiel | Podwójny | Podwójny |
Operator ^ jest zdefiniowany tylko dla Double typu danych. Język Visual Basic rozszerza każdy operand zgodnie z potrzebami przed Double operacją, a typ danych wynikowych to zawsze Double.
Arytmetyka całkowita
Typ danych wynikowych operacji całkowitej zależy od typów danych operandów. Ogólnie rzecz biorąc, program Visual Basic używa następujących zasad do określania typu danych wynikowych:
Jeśli oba operandy operatora binarnego mają ten sam typ danych, wynik ma ten typ danych. Wyjątek to
Boolean, który jest zmuszony doShort.Jeśli niepodpisany operand uczestniczy z podpisanym operandem, wynik ma podpisany typ z co najmniej tak dużym zakresem jak operand.
W przeciwnym razie wynik zwykle ma większe dwa typy danych operandu.
Należy pamiętać, że typ danych wynikowych może nie być taki sam jak typ danych operandu.
Uwaga / Notatka
Typ danych wynikowych nie zawsze jest wystarczająco duży, aby przechowywać wszystkie możliwe wartości wynikające z operacji. Wyjątek OverflowException może wystąpić, jeśli wartość jest zbyt duża dla typu danych wynikowych.
Jednoargumentowe + i — operatory
W poniższej tabeli przedstawiono typy danych wyników dla dwóch operatorów + jednoargumentowych i –.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Jednoargumentowy + |
Krótki | SByte | Byte | Krótki | UShort | Integer | Liczba całkowita U | Długi | ULong |
Jednoargumentowy – |
Krótki | SByte | Krótki | Krótki | Integer | Integer | Długi | Długi | Liczba dziesiętna |
<<operatory i >>
W poniższej tabeli przedstawiono typy danych wynikowych dla dwóch operatorów << przesunięcia bitowego i >>. Visual Basic traktuje każdy operator przesunięcia bitowego jako operator jednoargumentowy na lewym operandzie (wzorzec bitowy, który ma zostać przesunięty).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
<<, >> |
Krótki | SByte | Byte | Krótki | UShort | Integer | Liczba całkowita U | Długi | ULong |
Jeśli lewy operand to Decimal, , DoubleSinglelub String, Visual Basic próbuje przekonwertować go na Long przed operacją, a typ danych wynikowych to Long. Prawy operand (liczba pozycji bitowych do przesunięcia) musi być Integer lub typem, który rozszerza wartość .Integer
Operatory binarne +, –, *i mod
W poniższej tabeli przedstawiono typy danych wynikowych dla operatorów binarnych + i – operatorów i * .Mod Należy pamiętać, że ta tabela jest symetryczna; dla danej kombinacji typów danych operandu typ danych wynikowych jest taki sam, niezależnie od kolejności operandów.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
Krótki | SByte | Krótki | Krótki | Integer | Integer | Długi | Długi | Liczba dziesiętna |
SByte |
SByte | SByte | Krótki | Krótki | Integer | Integer | Długi | Długi | Liczba dziesiętna |
Byte |
Krótki | Krótki | Byte | Krótki | UShort | Integer | Liczba całkowita U | Długi | ULong |
Short |
Krótki | Krótki | Krótki | Krótki | Integer | Integer | Długi | Długi | Liczba dziesiętna |
UShort |
Integer | Integer | UShort | Integer | UShort | Integer | Liczba całkowita U | Długi | ULong |
Integer |
Integer | Integer | Integer | Integer | Integer | Integer | Długi | Długi | Liczba dziesiętna |
UInteger |
Długi | Długi | Liczba całkowita U | Długi | Liczba całkowita U | Długi | Liczba całkowita U | Długi | ULong |
Long |
Długi | Długi | Długi | Długi | Długi | Długi | Długi | Długi | Liczba dziesiętna |
ULong |
Liczba dziesiętna | Liczba dziesiętna | ULong | Liczba dziesiętna | ULong | Liczba dziesiętna | ULong | Liczba dziesiętna | ULong |
\Operator
W poniższej tabeli przedstawiono typy danych wyników dla \ operatora. Należy pamiętać, że ta tabela jest symetryczna; dla danej kombinacji typów danych operandu typ danych wynikowych jest taki sam, niezależnie od kolejności operandów.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
Krótki | SByte | Krótki | Krótki | Integer | Integer | Długi | Długi | Długi |
SByte |
SByte | SByte | Krótki | Krótki | Integer | Integer | Długi | Długi | Długi |
Byte |
Krótki | Krótki | Byte | Krótki | UShort | Integer | Liczba całkowita U | Długi | ULong |
Short |
Krótki | Krótki | Krótki | Krótki | Integer | Integer | Długi | Długi | Długi |
UShort |
Integer | Integer | UShort | Integer | UShort | Integer | Liczba całkowita U | Długi | ULong |
Integer |
Integer | Integer | Integer | Integer | Integer | Integer | Długi | Długi | Długi |
UInteger |
Długi | Długi | Liczba całkowita U | Długi | Liczba całkowita U | Długi | Liczba całkowita U | Długi | ULong |
Long |
Długi | Długi | Długi | Długi | Długi | Długi | Długi | Długi | Długi |
ULong |
Długi | Długi | ULong | Długi | ULong | Długi | ULong | Długi | ULong |
Jeśli jeden z operandów \ operatora to Liczba dziesiętna, Pojedyncza lub Podwójna, program Visual Basic próbuje przekonwertować go na Wartość Długa przed operacją, a typ danych wynikowych to Long.
Porównania relacyjne i bitowe
Typ danych wynikowych operacji relacyjnej (=, <>, <, >, <=, >=) jest zawsze Booleantypem danych logicznych. To samo dotyczy operacji logicznych (And, AndAlso, , NotOr, OrElse, Xor) w Boolean operandach.
Typ danych wynikowych operacji logicznej bitowej zależy od typów danych operandów. Należy pamiętać, że AndAlso element i OrElse są zdefiniowane tylko dla Booleanelementów i Visual Basic konwertuje każdy operand zgodnie z potrzebami Boolean przed wykonaniem operacji.
=, <>, , ><<= i >= Operatory
Jeśli oba operandy to Boolean, program Visual Basic uważa, że True jest mniejszy niż False. Jeśli typ liczbowy jest porównywany z elementem String, program Visual Basic próbuje przekonwertować String element na Double przed operacją. Argument Char lub Date operand można porównać tylko z innym operandem tego samego typu danych. Typ danych wynikowych to zawsze Boolean.
Operator not bitowy
W poniższej tabeli przedstawiono typy danych wynikowych dla operatora bitowego Not .
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Not |
logiczny | SByte | Byte | Krótki | UShort | Integer | Liczba całkowita U | Długi | ULong |
Jeśli operand ma Decimalwartość , , DoubleSinglelub String, Visual Basic próbuje przekonwertować go na Long przed operacją, a typ danych wynikowych to Long.
Operatory Bitwise And, Or i Xor
W poniższej tabeli przedstawiono typy danych wynikowych dla operatorów bitowych And, Ori Xor . Należy pamiętać, że ta tabela jest symetryczna; dla danej kombinacji typów danych operandu typ danych wynikowych jest taki sam, niezależnie od kolejności operandów.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
logiczny | SByte | Krótki | Krótki | Integer | Integer | Długi | Długi | Długi |
SByte |
SByte | SByte | Krótki | Krótki | Integer | Integer | Długi | Długi | Długi |
Byte |
Krótki | Krótki | Byte | Krótki | UShort | Integer | Liczba całkowita U | Długi | ULong |
Short |
Krótki | Krótki | Krótki | Krótki | Integer | Integer | Długi | Długi | Długi |
UShort |
Integer | Integer | UShort | Integer | UShort | Integer | Liczba całkowita U | Długi | ULong |
Integer |
Integer | Integer | Integer | Integer | Integer | Integer | Długi | Długi | Długi |
UInteger |
Długi | Długi | Liczba całkowita U | Długi | Liczba całkowita U | Długi | Liczba całkowita U | Długi | ULong |
Long |
Długi | Długi | Długi | Długi | Długi | Długi | Długi | Długi | Długi |
ULong |
Długi | Długi | ULong | Długi | ULong | Długi | ULong | Długi | ULong |
Jeśli operand to Decimal, , SingleDoublelub String, Visual Basic próbuje przekonwertować go na Long przed operacją, a typ danych wynikowych jest taki sam, jak w przypadku, gdy ten operand był Longjuż .
Różne operatory
Operator & jest definiowany tylko dla łączenia String operandów. Język Visual Basic konwertuje każdy operand zgodnie z potrzebami przed String operacją, a typ danych wynikowych to zawsze String. Dla celów & operatora wszystkie konwersje, które String mają być traktowane jako rozszerzające, nawet jeśli Option Strict ma wartość On.
Operatory Is i IsNot wymagają, aby oba operandy był typu odwołania. Wyrażenie TypeOf...Is wymaga, aby pierwszy operand był typu odwołania, a drugi operand był nazwą typu danych. We wszystkich tych przypadkach typ danych wynikowych to Boolean.
Operator Like jest definiowany tylko dla dopasowywania String wzorców operandów. Visual Basic próbuje przekonwertować każdy operand zgodnie z potrzebami String przed operacją. Typ danych wynikowych to zawsze Boolean.