Sdílet prostřednictvím


Logické a bitové operátory v jazyce Visual Basic

Logické operátory porovnání Boolean výrazy a návrat Boolean výsledek.And, Or, AndAlso, OrElse, A Xor operátory jsou binární protože se vezmou dva operandy, zatímco Not operátor je Unární protože má jediný operand.Některé z těchto operátorů můžete také provést bitové logické operace na integrální hodnoty.

Unární logický operátor

Not – operátor (Visual Basic) Provádí logické negace na Boolean výraz.Jeho výnosů logické opakem jeho operand.Pokud je výraz vyhodnocen jako True, pak Not vrátí False; Pokud je výraz vyhodnocen jako False, pak Not vrátí True.To ukazuje následující příklad.

Dim x, y As Boolean
x = Not 23 > 14
y = Not 23 > 67
' The preceding statements set x to False and y to True.

Binární logické operátory

And – operátor (Visual Basic) Provádí logické spolu dvěma Boolean výrazy.Pokud jsou oba výrazy vyhodnoceny True, pak And vrátí True.Pokud alespoň jeden z výrazů vyhodnocen jako False, pak And vrátí False.

Or – operátor (Visual Basic) Provádí logické způsobem nebo zařazení dvěma Boolean výrazy.Pokud je výraz vyhodnocen jako True, nebo i k vyhodnocení True, pak Or vrátí True.Pokud ani jeden výraz vyhodnocen jako True, Or vrátí False.

Xor – operátor (Visual Basic) Provádí logické vyloučení dvěma Boolean výrazy.Pokud právě jeden výraz vyhodnocen jako True, ale ne obojí Xor vrátí True.Pokud jsou oba výrazy vyhodnoceny True nebo i k vyhodnocení False, Xor vrátí False.

Následující příklad ukazuje And, Or, a Xor operátory.

Dim a, b, c, d, e, f, g As Boolean

a = 23 > 14 And 11 > 8
b = 14 > 23 And 11 > 8
' The preceding statements set a to True and b to False.

c = 23 > 14 Or 8 > 11
d = 23 > 67 Or 8 > 11
' The preceding statements set c to True and d to False.

e = 23 > 67 Xor 11 > 8
f = 23 > 14 Xor 11 > 8
g = 14 > 23 Xor 8 > 11
' The preceding statements set e to True, f to False, and g to False.

Nesmídojít ke zkratu logické operace

AndAlso – operátor (Visual Basic) Je velmi podobná And operátor, že také provádí logické spojení dvěma Boolean výrazy.Klíčovým rozdílem mezi nimi je AndAlso vykazuje nesmídojít ke zkratu chování.Pokud první výraz v AndAlso výraz vyhodnocen jako False, pak druhý výraz není vyhodnocena, protože jej nelze změnit konečný výsledek a AndAlso vrátí False.

Podobně OrElse – operátor (Visual Basic) provádí nesmídojít ke zkratu logický součet dvěma Boolean výrazy.Pokud první výraz v OrElse výraz vyhodnocen jako True, pak druhý výraz není vyhodnocena, protože jej nelze změnit konečný výsledek a OrElse vrátí True.

Nesmídojít ke zkratu kompromis

Nesmídojít ke zkratu může zlepšit výkon není vyhodnocením výrazu, který nelze změnit výsledek logické operace.Pokud tento výraz provede další akce, však nesmídojít ke zkratu přeskočí těchto akcí.Pokud výraz obsahuje volání Function postup, postup se nevolá, pokud je výraz short-circuited a jakékoli další kód obsažený v Function nelze spustit.Proto funkce může spustit pouze příležitostně a pravděpodobně správně testovány.Nebo závisí na kód v logice programu Function.

Následující příklad ukazuje rozdíl mezi And, Ora jejich protějšky v short-circuiting.

Dim amount As Integer = 12
Dim highestAllowed As Integer = 45
Dim grandTotal As Integer
If amount > highestAllowed And checkIfValid(amount) Then 
    ' The preceding statement calls checkIfValid(). 
End If 
If amount > highestAllowed AndAlso checkIfValid(amount) Then 
    ' The preceding statement does not call checkIfValid(). 
End If 
If amount < highestAllowed Or checkIfValid(amount) Then 
    ' The preceding statement calls checkIfValid(). 
End If 
If amount < highestAllowed OrElse checkIfValid(amount) Then 
    ' The preceding statement does not call checkIfValid(). 
End If
Function checkIfValid(ByVal checkValue As Integer) As Boolean 
    If checkValue > 15 Then
        MsgBox(CStr(checkValue) & " is not a valid value.")
        ' The MsgBox warning is not displayed if the call to 
        ' checkIfValid() is part of a short-circuited expression. 
        Return False 
    Else
        grandTotal += checkValue
        ' The grandTotal value is not updated if the call to 
        ' checkIfValid() is part of a short-circuited expression. 
        Return True 
    End If 
End Function

V předchozím příkladu, nezapomeňte, že některé důležité kód uvnitř checkIfValid() při volání je short-circuited.První If volání příkazu checkIfValid() i když 12 > 45 vrátí False, protože And není zkratové.Druhý If příkaz Zavolat checkIfValid(), protože při 12 > 45 vrátí False, AndAlso ke zkratům druhý výraz.Třetí If volání příkazu checkIfValid() i když 12 < 45 vrátí True, protože Or není zkratové.Čtvrtá If příkaz Zavolat checkIfValid(), protože při 12 < 45 vrátí True, OrElse ke zkratům druhý výraz.

Bitové operace

Bitové operace vyhodnotit dvě integrální hodnoty ve formě binární (základ 2).Tyto bity na odpovídajících místech porovnat a přiřadit hodnoty na základě porovnání.Následující příklad ukazuje And operátor.

Dim x As Integer
x = 3 And 5

V předchozím příkladu nastaví hodnotu x 1.V takovém z následujících důvodů:

  • Hodnoty jsou považovány za binární soubor:

    3 v binární formě = 011

    5 v binární formě = 101

  • And Operátor porovná binární vyjádření binární pozici (bit) současně.Pokud jsou oba bity na dané pozici 1, 1 je umístěn v této poloze ve výsledku.Pokud je buď bit 0, 0 je umístěn v této poloze ve výsledku.V předchozím příkladu to funguje takto:

    011 (3 v binární formě)

    101 (5 v binární formě)

    001 (Výsledek, v binárním formátu)

  • Výsledek je považován za desetinné čárky.001 Hodnotu 1, binární vyjádření tak x = 1.

Bitové Or operace se podobá, pokud je jeden nebo oba porovnávané bity 1 přiřazena 1 bit výsledek.Xorpřiřadí výsledek bit 1, pokud přesně jedna porovnávané bity (nikoli obojí) 1.Notmá jediný operand a Invertuje všechny bity, včetně znaménkový bit a přiřadí hodnotu výsledek.To znamená, že pro podepsané kladná čísla Not vždy vrátí zápornou hodnotu a záporných čísel, Not vždy vrátí pozitivního nebo nulovou hodnotu.

AndAlso a OrElse operátory bitově orientované operace nepodporují.

[!POZNÁMKA]

Bitové operace lze provádět pouze nedílnou typy.Hodnoty s plovoucí desetinnou čárkou musí převést na typů bitové operace pokračovat.

Viz také

Referenční dokumentace

Logické/bitové operátory (Visual Basic)

Koncepty

Výrazy logických hodnot (Visual Basic)

Aritmetické operátory v jazyce Visual Basic

Operátory porovnání v jazyce Visual Basic

Operátory řetězení v jazyce Visual Basic

Účinná kombinace operátorů (Visual Basic)