Człowiek rodzi się zmęczony i żyje, aby odpoczywać.
Visual Basic 6 - Operatory

Operatory arytmetyczne

Potęgowanie - operator ^

Składnia:
   Wynik = PodstawaPotęgi ^ WykładnikPotęgi
Gdzie:
   Wynik            dowolna zmienna numeryczna
   PodstawaPotęgi   dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   WykładnikPotęgi  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
Uwagi:
  • Podstawa może być liczbą ujemną tylko wtedy, gdy wykładnik jest liczbą całkowita.
  • Jeżeli w jednym wyrażeniu występuje wiele potęgowań, to wykonywane są kolejno od lewej do prawej strony.
  • Wynik zwykle jest typu Double. Jeżeli jednak podstawa lub wykładnik mają wartość Null, to wynik również przyjmuje wartość Null.
Przykłady:
   Dim Liczba

   Liczba = 2 ^ 2      ' zwraca wartość 4
   Liczba = 3 ^ 3 ^ 3  ' zwraca wartość 19683
   Liczba = (-5) ^ 3   ' zwraca wartość -125

Mnożenie - operator *

Składnia:
   Wynik = Liczba1 * Liczba2
Gdzie:
   Wynik    dowolna zmienna numeryczna
   Liczba1  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   Liczba2  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
Uwagi:
  • Wynik przyjmuje dokładność "bardziej dokładnego" argumentu. Rosnąca dokładność typów numerycznych jest następyjąca: Byte, Integer, Long, Single, Currency, Double. Wyjątkami od tej reguły są::
    • mnożenie typu Single i Long zwraca typ Double;
    • wyniki typu Long, Single i Date przekraczające zakres typu są konwertowane na typ Variant zawierający liczbę typu Double;
    • wyniki typu Byte przekraczający zakres typu jest konwertowany na typ Integer;
    • wyniki typu Integer przekraczający zakres typu jest konwertowany na typ Long.
  • Jeżeli jeden lub oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli jeden lub oba argumenty mają wartość Empty, to wynik przyjmuje wartość 0.
Przykłady:
   Dim Liczba

   Liczba = 2 * 2            ' zwraca wartość 4
   Liczba = 459.35 * 334.90  ' zwraca wartość 153836.315

Dzielenie - operator /

Składnia:
   Wynik = Liczba1 / Liczba2
Gdzie:
   Wynik    dowolna zmienna numeryczna
   Liczba1  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   Liczba2  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
Uwagi:
  • Wynik jest zwykle typu Double.
  • Jeżeli jeden lub oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli jeden lub oba argumenty mają wartość Empty, to wynik przyjmuje wartość 0.
Przykłady:
   Dim Liczba

   Liczba = 10 / 4     ' zwraca wartość 2.5
   Liczba = 10 / 3     ' zwraca wartość 3.3333333

Dzielenie całkowite - operator \

Zwraca część całkowitą z dzielenia dwóch liczb.

Składnia:

   Wynik = Liczba1 \ Liczba2
Gdzie:
   Wynik    dowolna zmienna numeryczna
   Liczba1  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   Liczba2  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
Uwagi:
  • Przed wykonaniem działania oba argumenty są zaokrąglane do liczby całkowitej.
  • Wynik jest zawsze typu całkowitego, a część ułamkowa (o ile wystąpi) jest obcinana.
  • Jeżeli jeden lub oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli jeden lub oba argumenty mają wartość Empty, to wynik przyjmuje wartość 0.
Przykłady:
   Dim Liczba

   Liczba = 11 \ 4     ' zwraca wartość 2
   Liczba = 9 \ 3      ' zwraca wartość 3
   Liczba = 100 \ 3    ' zwraca wartość 33

Modulo - operator Mod

Zwraca resztę z dzielenia dwóch liczb.

Składnia:

   Wynik = Liczba1 Mod Liczba2
Gdzie:
   Wynik    dowolna zmienna numeryczna
   Liczba1  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   Liczba2  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
Uwagi:
  • Przed wykonaniem działania oba argumenty są zaokrąglane do liczby całkowitej.
  • Wynik jest zawsze typu całkowitego, a część ułamkowa (o ile wystąpi) jest obcinana.
  • Jeżeli jeden lub oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli jeden lub oba argumenty mają wartość Empty, to wynik przyjmuje wartość 0.
Przykłady:
   Dim Liczba

   Liczba = 10 Mod 5     ' zwraca wartość 0
   Liczba = 10 Mod 3     ' zwraca wartość 1
   Liczba = 12 Mod 4.3   ' zwraca wartość 0
   Liczba = 12.6 Mod 5   ' zwraca wartość 3

Dodawanie - operator +

Składnia:
   Wynik = Liczba1 + Liczba2
Gdzie:
   Wynik    dowolna zmienna numeryczna
   Liczba1  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   Liczba2  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
Uwagi:
  • Jeżeli chociaż jeden z argumentów dodawania może być typu łańcuchowego, to wynik jest nieprzewidywalny. Dlatego do łączenia łańcuchów znaków bezpieczniej jest używać zawsze operatora &, gdyż operator + może dać w wyniku zarówno sumę jak i połączone napisy.
  • Jeżeli co najmniej jeden z argumentów jest typu Variant, to obowiązują następujące reguły:
    • jeżeli oba wyrażenia są numeryczne (Byte, Boolean, Integer, Long, Single, Double, Date lub Currency, ), to liczby są dodawane;
    • jeżeli oba wyrażenia są typu String, to wykonywana jest konkatenacja napisów;
    • jedno wyrażenie numeryczne, a drugie Variant (z wyjątkiem Null), to następuje dodawane;
    • jedno wyrażenie typu String, a drugie Variant (z wyjątkiem Null), to następuje konkatenacja;
    • jedno wyrażenie Empty Variant, to zwracane jest niezmienione drugie wyrażenie;
    • jedno wyrażenie numeryczne, a drugie String (z wyjątkiem Null), to wystąpi błąd;
    • oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli oba argumenty są typu Variant, to obowiązują następujące reguły:
    • jeżeli oba wyrażenia są numeryczne, to liczby są dodawane;
    • jeżeli oba wyrażenia są typu String, to wykonywana jest konkatenacja napisów;
    • jedno wyrażenie numeryczne, a drugie String, to następuje dodawane;
  • Jeżeli jeden z argumentów dodawania jest typu Date, to wynik zawsze jest typu Date.
  • Jeżeli jeden lub oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli oba argumenty mają wartość Empty, to wynik przyjmuje typ Integer.
  • Jeżeli tylko jeden argument ma wartość Empty, to wynik przyjmuje wartość drugiego wyrażenia.
Przykłady:

   Dim Wynik, Liczba1, Liczba2

   Wynik = 2 + 2                   ' zwraca wartość 4
   Wynik = 4257.04 + 98112         ' zwraca wartość 102369.04

   Liczba1 = "34": Liczba2 = 6     ' zmienne zainicjowane łańcuchem i liczbą
   Wynik = Liczba1 + Liczba2       ' zwraca wartość 40

   Liczba1 = "34": Liczba2 = "6"   ' zmienne zainicjowane łańcuchami
   Wynik = Var1 + Var2             ' zwraca wartość "346" (łańcuch)

Odejmowanie - operator -

Używany do odejmowania liczb lub zmiany znaku liczby. Składnia 1 - odejmowanie:
   Wynik = Liczba1 - Liczba2
Składnia 2 - zmiana znaku:
   - LiczbaX
Gdzie:
   Wynik    dowolna zmienna numeryczna
   Liczba1  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   Liczba2  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   LiczbaX  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
Uwagi:
  • Wynik jest takiego samego typu jak argumenty. Występują jednak wyjątki:
    • wynikiem odejmowania daty i liczby jest data;
    • wynikiem odejmowania 2 dat jest liczba typu Double.
  • Jeżeli jeden lub oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli jeden lub oba argumenty mają wartość Empty, to wynik przyjmuje wartość 0.
Przykłady:
   Dim Liczba

   Liczba = 4 - 2             ' zwraca wartość 2
   Liczba = 459.35 - 334.90   ' zwraca wartość 124.45
   Liczba = -(5)              ' zwraca wartość -5

Operatory łańcuchowe

Operator &

Służy do łączenia (konkatenacji) łańcuchów znakowych.

Składnia:

   Wynik = Wyrażenie1 & Wyrażenie2
Gdzie:
   Wynik            dowolna zmienna typu String lub Variant
   Wyrażenie1       dowolne wyrażenie
   Wyrażenie2       dowolne wyrażenie
Uwagi:
  • Jeżeli któryś z argumentów nie jest łańcuchem, to jest konwertowany do typu String
  • Wynik jest zawsze typu String.
  • Jeżeli oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli tylko jeden argument ma wartość Null, to drugi traktowany jest jako pusty łańcuch ("") i następuje konkatenacja.
  • Każde wyrażenie typu Empty jest traktowane jak pusty łańcuch znaków.
Przykłady:
   Dim Napis

   Napis = "Mój" & " napis"         ' zwróci "Mój napis"
   Napis = "abc" & 123 & "def"      ' zwróci "abc123def"

Dodawanie - operator +

Operator dodawania, który można wykorzystać również do łączenia napisów. Nie jest jednak zalecany ze względu na nieprzewidywalność otrzymanego wyniku.

Składnia:

   Wynik = Liczba1 + Liczba2
Gdzie:
   Wynik    dowolna zmienna numeryczna
   Liczba1  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
   Liczba2  dowolne wyrażenie numeryczne (zmienna, stała lub wyrażenie)
Uwagi:
  • Jeżeli chociaż jeden z argumentów dodawania może być typu łańcuchowego, to wynik jest nieprzewidywalny. Dlatego do łączenia łańcuchów znaków bezpieczniej jest używać zawsze operatora &, gdyż operator + może dać w wyniku zarówno sumę jak i połączone napisy.
  • Jeżeli co najmniej jeden z argumentów jest typu Variant, to obowiązują następujące reguły:
    • jeżeli oba wyrażenia są numeryczne (Byte, Boolean, Integer, Long, Single, Double, Date lub Currency, ), to liczby są dodawane;
    • jeżeli oba wyrażenia są typu String, to wykonywana jest konkatenacja napisów;
    • jedno wyrażenie numeryczne, a drugie Variant (z wyjątkiem Null), to następuje dodawane;
    • jedno wyrażenie typu String, a drugie Variant (z wyjątkiem Null), to następuje konkatenacja;
    • jedno wyrażenie Empty Variant, to zwracane jest niezmienione drugie wyrażenie;
    • jedno wyrażenie numeryczne, a drugie String (z wyjątkiem Null), to wystąpi błąd;
    • oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli oba argumenty są typu Variant, to obowiązują następujące reguły:
    • jeżeli oba wyrażenia są numeryczne, to liczby są dodawane;
    • jeżeli oba wyrażenia są typu String, to wykonywana jest konkatenacja napisów;
    • jedno wyrażenie numeryczne, a drugie String, to następuje dodawane;
  • Jeżeli jeden z argumentów dodawania jest typu Date, to wynik zawsze jest typu Date.
  • Jeżeli jeden lub oba argumenty mają wartość Null, to wynik również przyjmuje wartość Null.
  • Jeżeli oba argumenty mają wartość Empty, to wynik przyjmuje typ Integer.
  • Jeżeli tylko jeden argument ma wartość Empty, to wynik przyjmuje wartość drugiego wyrażenia.
Przykłady:

   Dim Wynik, Liczba1, Liczba2

   Wynik = 2 + 2             ' zwraca wartość 4
   Wynik = 4257.04 + 98112   ' zwraca wartość 102369.04

   Liczba1 = "34": Liczba2 = 6     ' zmienne zainicjowane łańcuchem i liczbą
   Wynik = Liczba1 + Liczba2       ' zwraca wartość 40

   Liczba1 = "34": Liczba2 = "6"   ' zmienne zainicjowane łańcuchami
   Wynik = Var1 + Var2             ' zwraca wartość "346" (łańcuch)

Operatory porównania

Składnia:
   Wynik = Wyrażenie1 OpRel Wyrażenie2
lub
   Wynik = Obiekt1 Is Obiekt1
lub
   Wynik = Łańcuch Like Wzorzec
Gdzie:
   Wynik                    dowolna zmienna numeryczna lub logiczna 
   Obiekt1, Obiekt2         nazwy obiektów
   Wyrażenie1, Wyrażenie2   dowolne wyrażenia
   OpRel                    operator relacji (patrz niżej)
   Łańcuch                  wyrażenie łańcuchowe 
   Wzorzec                  wzorzec do porównania łańcucha znaków 
Poniższa tabela zawiera listę operatorów relacji oraz zwracane przez nie wyniki.
 
OperatorTrue, gdyFalse, gdyNull, gdy
<wyr1 < wyr2wyr1 >= wyr2wyr1 lub wyr2 = Null
<=wyr1 <= wyr2wyr1 > wyr2wyr1 lub wyr2 = Null
>wyr1 > wyr2wyr1 <= wyr2wyr1 lub wyr2 = Null
>wyr1 > wyr2wyr1 <= wyr2wyr1 lub wyr2 = Null
=wyr1 = wyr2wyr1 <> wyr2wyr1 lub wyr2 = Null
<>wyr1 <> wyr2wyr1 = wyr2wyr1 lub wyr2 = Null

Kolejna tabela przedstawia sposób porównywania wyrażeń zależnie od typu każdego z nich:

Jeżelito
oba wyrażenia są typu numerycznego wykonywane jest porównywanie numeryczne
oba wyrażenia są łańcuchami znaków wykonywane jest porównywanie napisów:
porównywane są kolejne znaki łańcuchów, wynik zależy od ustawienia Option Compare (Binary odróżnia wielkość liter, a Text - nie)
jedno wyrażenie jest numeryczne, a drugie typu Variant zawierające wartość numeryczną wykonywane jest porównywanie numeryczne
jedno wyrażenie jest numeryczne, a drugie napisem typu Variant, który nie można zamienić na wartość numeryczną wystąpi błąd niezgodności typów
jedno wyrażenie jest typu String, a drugie typu Variant, ale nie zawiera wartości Null wykonywane jest porównywanie napisów
jedno wyrażenie jest Empty, a drugie typu numerycznego wykonywane jest porównywanie numeryczne z podstawieniem 0 za wartość Empty
jedno wyrażenie jest Empty, a drugie typu String wykonywane jest porównywanie napisów z podstawieniem pustego łańcucha "" za wartość Empty

Przykłady:

   Dim Wynik, Wyrażenie1, Wyrażenie2

   Wynik = (45 < 35)                   ' False
   Wynik = (45 = 45)                      ' True
   Wynik = (4 <> 3)                 ' True
   Wynik = ("5" > "4")                 ' True

   Wyrażenie1 = "5": Wyrażenie2 = 4
   Wynik = (Wyrażenie1 > Wyrażenie2)   ' True

   Wyrażenie1 = 5: Wyrażenie2 = Empty
   Wynik = (Wyrażenie1 > Wyrażenie2)   ' True

   Wyrażenie1 = 0: Wyrażenie2 = Empty
   Wynik = (Var1 = Var2)                  ' True

Operator Is

Operator Is jest używany do porównania dwóch zmiennych obiektowych. Składnia:
   Wynik = Obiekt1 Is Obiekt2 
Gdzie:
   Wynik                    dowolna zmienna numeryczna lub logiczna 
   Obiekt1, Obiekt2         nazwy obiektów
Jeżeli Obiekt1 i Obiekt2 odwołują się do tego samego obiektu, to Wynik będzie True. W przeciwnym wypadku False.
Dwie zmienne mogą odwoływać się do tego samego obiektu na kilka sposobów. Np. zmienna A może być przypisana do tego samego obiektu co zmienna B:
   Set A=B
W poniższym przykładzie A i B odnoszą się do tego samego obiektu co C:
   Set A=C
   Set B=C
Przykład:
   Dim Obiekt1, Obiekt2, Obiekt3, Obiekt4, Wynik
   Set Obiekt2 = Obiekt1
   Set Obiekt3 = Obiekt1

   Wynik = Obiekt2 Is Obiekt3     ' True
   Wynik = Obiekt4 Is Obiekt3     ' False

Operator Like

Operator Like używany jest do porównywania łańcuchów znaków. Składnia:
   Wynik = Łańcuch Like Wzorzec
Gdzie:
   Wynik                    dowolna zmienna numeryczna lub logiczna 
   Łańcuch                  wyrażenie łańcuchowe 
   Wzorzec                  wzorzec do porównania łańcucha znaków 
Uwagi:
  • Jeżeli Łańcuch pasuje do Wzorca zostanie zwrócone True, w przeciwnym przypadku - False.
  • Jeżeli Łańcuch lub Wzorzec ma wartość Null, zostanie zwrócone Null.
  • Sposób porównywania przez operator Like jest zależny od ustawień Option Compare.
  • Domyślną metodą porównania jest Option Compare Binary. Wynik porównania Binary jest oparty na wewnętrznej binarnej reprezentacji znaków. W Windows kolejność jest określona przez stronę kodową. Porządek binarny dla polskiej strony kodowej:
       A < B < E < Z < a < b < e < z < Ą < Ę < Ż < ą < ę < ż
  • Rezultat porównania Option Compare Text oparty jest na porządku określonym przez ustawienia lokalne systemu, bez uwzględniania wielkości liter. Porządek tekstowy dla polskiej strony kodowej:
       (A=a) < (Ą=ą) < (B=b) < (E=e) < (Ę=ę) < (Z=z) < (Ż=ż)
  • Zestaw specjalnych znaków pozwala na tworzenie złożonych Wzorców porównania, w którym można używać znaków wieloznacznych, list i zakresów znaków w dowolnej kombinacji.
    ZnakZnaczenie
    ?pojedynczy znak
    *0 lub więcej znaków
    #cyfra 0-9
    [ lista ]dowolny znak z listy
    [ !lista ]dowolny znak nie znajdujący się w liście
  • Zestaw jednego lub więcej znaków w liście zawarty w nawiasach kwadratowych ([ ]) może być użyty do określenia pojedynczego znaku w Łańcuchu i może zawierać prawie wszystkie znaki włączając cyfry.
  • Aby uzyskać w liście jeden ze znaków specjalnych: otwierający nawias kwadratowy ([), znak zapytania (?), znak liczby (#) lub gwiazdkę (*) należy zamknąć go w nawiasach kwadratowych.
  • Zamykający nawias kwadratowy (]) nie może być wykorzystywany wewnątrz listy, ale może być wykorzystywany poza nią jako pojedynczy znak.
  • Znak myślnik (-) może być używany do określenia zakresu znaków pomiędzy górnym i dolnym zakresem. Np. [A-Z] określa znak należący do zakresu dużych liter od A do Z. Jeżeli powinno zostać użytych kilka zakresów należy umieścić je w nawiasie kwadratowym bez znaków separujących, np. [A-Ec-g].
  • Znaczenie poszczególnych zakresów jest zależne od wybranego porządku znaków zależnego od ustawień Option Compare i lokalnych ustawień strony kodowej.
    Np. użycie Compare Binary z zakresem [A-C] powoduje użycie znaków A, B i C.
    Użycie Compare Text z zakresem [A-C], wymusi sprawdzenie znaków A, a, Ą, ą, B, b, C, c.
  • Wykrzyknik (!) na początku listy oznacza, że poszukiwany jest dowolny znak nie występujący na podanej liście. Jeżeli wykrzyknik zostanie użyty wewnątrz nawiasów kwadratowych [!], oznacza poszukiwanie znaku wykrzyknika.
  • Znak minus (-) oznacza poszukiwany znak, jeżeli znajduje się na początku lub na końcu listy znaków. W innej pozycji traktowany jest jako znak określający zakres.
  • Jeżeli zostanie określony zakres znaków, musi on być w porządku rosnącym. [A-Z] jest poprawnym zakresem, natomiast [Z-A] nie.
  • Sekwencja znaków [ ] traktowana jest jako łańcuch o zerowej długości ("").
Przykład:
   Dim Wynik

   Wynik = "aBBBa" Like "a*a"            ' True
   Wynik = "F" Like "[A-Z]"              ' True
   Wynik = "F" Like "[!A-Z]"             ' False
   Wynik = "a2a" Like "a#a"              ' True
   Wynik = "aM5b" Like "a[L-P]#[!c-e]"   ' True
   Wynik = "BAT123khg" Like "B?T*"       ' True
   Wynik = "CAT123khg" Like "B?T*"       ' False

Operatory logiczne

Operator And

Operator And wykonuje koniunkcję (iloczyn logiczny) na 2 wyrażeniach.
Składnia:
   [ Wynik = ]  Wyrażenie1 And Wyrażenie2
Wartości zwracane przez operator And przedstawia poniśsza tabela:
 
Wyrażenie1Wyrażenie2Wynik
TrueTrueTrue
TrueFalseFalse
TrueNullNull
FalseTrueFalse
FalseFalseFalse
FalseNullFalse
NullTrueNull
NullFalseFalse
NullNullNull
 
Operator And pozwala również na porównanie bitów na tych samych pozycjach w dwóch Wyrażeniach i odpowiednim ustawieniu bitów w Wyniku:
 
Bit w Wyrażeniu1Bit w Wyrażeniu2Bit w Wyniku
000
010
100
111
Przykłady:
   Dim A, B, C, D, Wynik

   A = 10  :  B = 8  :  C = 6  :  D = Null
   Wynik = A > B And B > C      ' True
   Wynik = B > A And B > C      ' False
   Wynik = A > B And B > D      ' Null
   Wynik = A And B              ' 8 (operacja na bitach)

Operator Eqv

Operator Eqv wykorzystywany jest do wykonywania operacji logicznej równości 2 wyrażeń.
Składnia:
   [ Wynik = ]  Wyrażenie1 Eqv Wyrażenie2
Jeżeli choć jedno z Wyrażeń ma wartość Null, Wynikiem będzie Null. W innym przypadku wartość przedstawia poniższa tabela:
 
Wyrażenie1Wyrażenie2Wynik
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseTrue
 
Operator Eqv pozwala również na porównanie bitów na tych samych pozycjach w dwóch Wyrażeniach i odpowiednim ustawieniu bitów w Wyniku:
 
Bit w Wyrażeniu1Bit w Wyrażeniu2Bit w Wyniku
001
010
100
111
Przykłady:
   Dim A, B, C, D, Wynik

   A = 10  :  B = 8  :  C = 6  :  D = Null
   Wynik = A > B Eqv B > C        ' True
   Wynik = B > A Eqv B > C        ' False
   Wynik = A > B Eqv B > D        ' Null
   Wynik = A Eqv B                ' -3 (operacja na bitach)

Operator Imp

Operator Imp wykorzystywany jest do wykonywania operacji logicznej implikacji na dwóch wyrażeniach.
Składnia:
   [ Wynik = ]  Wyrażenie1 Imp Wyrażenie2
Wartości zwracane przez operator Imp przedstawia poniższa tabela:
 
Wyrażenie1Wyrażenie2Wynik
TrueTrueTrue
TrueFalseFalse
TrueNullNull
FalseTrueTrue
FalseFalseTrue
FalseNullTrue
NullTrueTrue
NullFalseNull
NullNullNull
 
Operator Imp pozwala również na porównanie bitów na tych samych pozycjach w dwóch Wyrażeniach i odpowiednim ustawieniu bitów w Wyniku:
 
Bit w Wyrażeniu1Bit w Wyrażeniu2Bit w Wyniku
001
011
100
111
Przykłady:
   Dim A, B, C, D, Wynik

   A = 10  :  B = 8  :  C = 6  :  D = Null
   Wynik = A > B Imp B > C      ' True
   Wynik = A > B Imp C > B      ' False
   Wynik = B > A Imp C > B      ' True
   Wynik = B > A Imp C > D      ' True
   Wynik = C > D Imp B > A      ' Null
   Wynik = B Imp A              ' -1 (operacja na bitach)

Operator Not

Operator Not wykorzystywany jest do wykonywania operacji negacji logicznej wyrażenia.
Składnia:
   [ Wynik = ]  Not Wyrażenie
Wartości zwracane przez operator Not przedstawia poniższa tabela:
 
WyrażenieWynik
TrueFalse
FalseTrue
NullNull
 
Operator Not pozwala również na negację bitów Wyrażenia i odpowiednim ustawieniu bitów w Wyniku:
 
Bit w WyrażeniuBit w Wyniku
01
10
Przykłady:
   Dim A, B, C, D, Wynik

   A = 10  :  B = 8  :  C = 6  :  D = Null
   Wynik = Not (A > B)       ' False
   Wynik = Not (B > A)       ' True
   Wynik = Not (C > D)       ' Null
   Wynik = Not A             ' -11 (operacja na bitach)

Operator Or

Operator Or wykorzystywany jest do wykonywania operacji alternatywy (sumy logicznej) na dwóch wyrażeniach.
Składnia:
   [ Wynik = ]  Wyrażenie1 Or Wyrażenie2
Wartości zwracane przez operator Or przedstawia poniższa tabela:
 
Wyrażenie1Wyrażenie2Wynik
TrueTrueTrue
TrueFalseTrue
TrueNullTrue
FalseTrueTrue
FalseFalseFalse
FalseNullNull
NullTrueTrue
NullFalseNull
NullNullNull
 
Operator Or pozwala również na porównanie bitów na tych samych pozycjach w dwóch Wyrażeniach i odpowiednim ustawieniu bitów w Wyniku:
 
Bit w Wyrażeniu1Bit w Wyrażeniu2Bit w Wyniku
000
011
101
111
Przykłady:
   Dim A, B, C, D, Wynik

   A = 10  :  B = 8  :  C = 6  :  D = Null
   Wynik = A > B Or B > C        ' True
   Wynik = B > A Or B > C        ' True
   Wynik = A > B Or B > D        ' True
   Wynik = B > D Or B > A        ' Null
   Wynik = A Or B                ' 10 (operacja na bitach)

Operator Xor

Operator Xor wykorzystywany jest do wykonywania operacji alternatywy wykluczającej na dwóch wyrażeniach.
Składnia:
   [ Wynik = ]  Wyrażenie1 Xor Wyrażenie2
Jeżeli tylko jedno z Wyrażeń ma wartość True, to wynikiem będzie True. Jeżeli oba wyrażenia mają wartość Null, wynikiem będzie również Null. Wartości zwracane przez operator Xor, gdy obydwa wyrażenia są różne od Null:
 
Wyrażenie1Wyrażenie2Wynik
TrueTrueFalse
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse
 
Operator Xor pozwala również na porównanie bitów na tych samych pozycjach w dwóch Wyrażeniach i odpowiednim ustawieniu bitów w Wyniku:
 
Bit w Wyrażeniu1Bit w Wyrażeniu2Bit w Wyniku
000
011
101
110
Przykłady:
   Dim A, B, C, D, Wynik

   A = 10  :  B = 8  :  C = 6  :  D = Null
   Wynik = A > B Xor B > C        ' False
   Wynik = B > A Xor B > C        ' True
   Wynik = B > A Xor C > B        ' False
   Wynik = B > D Xor A > B        ' Null
   Wynik = A Xor B                ' 2 (operacja na bitach)

Priorytety operatorów

Jeżeli w wyrażeniu wystąpi wiele operatorów, każda część jest obliczana i sprawdzana w oparciu o kolejność priorytetów operatorów. Jeżeli wyrażenie zawiera operatory należące do różnych kategorii, to kolejność ich wykonywania jest następująca:
  • najpierw wykonywane są działania operatorów arytmetycznych;
  • potem operatorów porównania;
  • i na końcu operatorów logicznych.
Wszystkie operatory porównania mają taki sam priorytet i wykonywane są w takim porządku w jakim znajdują się w wyrażeniu w kolejności od lewej do prawej. Operatory logiczne i arytmetyczne wykonywane są w porządku określonym przez priorytety:
 
PriorytetArytmetyczneLogiczne
1Potęgowanie (^)Not
2Zmiana znaku (-)And
3Mnożenie (*) i dzielenie (/)Or
4Dzielenie całkowite (\)Xor
5Moduł (Mod)Eqv
6Dodawanie (+) i odejmowanie (-)Imp
7Łączenie łańcuchów (&) 
 
Uwagi:
  • Jeżeli mnożenie i dzielenie wystąpią razem wykonywane są w kolejności od lewej do prawej.
  • Jeżeli dodawanie i odejmowanie wystąpią razem wykonywane są w kolejności od lewej do prawej.
  • Nawiasy okrągłe () mogą być używane, aby zmienić kolejność wykonywania działań. Działania zawarte w nawiasach zawsze są wykonywane przed działaniami poza nawiasami. Wewnątrz nawiasów obowiązuje kolejność wykonywania działań zgodna z priorytetami.
  • Operator łączenia łańcuchów (&) nie jest operatorem arytmetycznym, ale ma swój priorytet i występuje za wszystkimi operatorami arytmetycznymi i przed operatorami logicznymi.
  • Operator Like ma taki priorytet jak wszystkie operatory porównania.
  • Operator Is jest obiektowym odpowiednikiem operatora porównania. Nie porównuje on obiektów ani ich wartości. Sprawdza tylko czy dwa odwołania do obiektów odnoszą się do tego samego obiektu.
« wstecz   dalej »