VB.Net - 邏輯/位運(yùn)算符

2022-06-02 11:46 更新

下表顯示了VB.Net支持的所有邏輯運(yùn)算符。 假設(shè)變量A為布爾值True,變量B為布爾值False,則:

運(yùn)算符描述實(shí)例
And它是邏輯運(yùn)算符,也是按位與運(yùn)算符。如果兩個(gè)操作數(shù)都為真,則條件為真。該運(yùn)算符不執(zhí)行短路操作,即同時(shí)計(jì)算兩個(gè)表達(dá)式。(該運(yùn)算符又被稱為與運(yùn)算符,只有兩邊都為真時(shí)返回結(jié)果才能為真)
(A And B) 返回 False.
Or它既是邏輯運(yùn)算符,也是按位或運(yùn)算符。如果兩個(gè)操作數(shù)中的任何一個(gè)為真,則條件為真。該運(yùn)算符不執(zhí)行短路操作,即同時(shí)計(jì)算兩個(gè)表達(dá)式。(該運(yùn)算符又被稱為或運(yùn)算符,只有兩邊都為假時(shí)返回的結(jié)果才能為假)
(A Or B) 返回 True.
Not它既是邏輯運(yùn)算符,也是按位非運(yùn)算符。 用于反轉(zhuǎn)其操作數(shù)的邏輯狀態(tài)。 如果條件為真,則邏輯非運(yùn)算符將為假。(該運(yùn)算符又被稱為非運(yùn)算符,用于反轉(zhuǎn)邏輯狀態(tài))Not(A And B) 返回True.
Xor它是邏輯和按位邏輯異或運(yùn)算符。如果兩個(gè)表達(dá)式都為真或都為假,則返回True;否則,它返回False。該運(yùn)算符不執(zhí)行短路,它總是計(jì)算兩個(gè)表達(dá)式,并且沒有該運(yùn)算符的短路對(duì)應(yīng)項(xiàng)
(異或運(yùn)算的特點(diǎn)是:只有兩個(gè)表達(dá)式結(jié)果不同才會(huì)返回真)
A Xor B 返回 True.
AndAlso它是邏輯AND運(yùn)算符。它只對(duì)布爾數(shù)據(jù)有效。它執(zhí)行短路。

(A AndAlso B) 返回 False.
OrElse它是邏輯或運(yùn)算符。 它只適用于布爾數(shù)據(jù)。 它執(zhí)行短路。(A OrElse B) 返回 True.
IsFalse它確定表達(dá)式是否為False。 
IsTrue它確定表達(dá)式是否為True。
短路運(yùn)算:一種邏輯運(yùn)算規(guī)則,我們知道與邏輯運(yùn)算的算法是只要有一個(gè)假就能判定為假,或運(yùn)算符只要有一個(gè)為真就能判定為真。短路運(yùn)算的算法就是建立在這一基礎(chǔ)上。
以與運(yùn)算為例:當(dāng)兩個(gè)表達(dá)式前一個(gè)表達(dá)式判定為假時(shí),第二個(gè)表達(dá)式不會(huì)進(jìn)行計(jì)算,直接返回假
這樣的計(jì)算被稱為短路運(yùn)算,它可以提高邏輯運(yùn)算的速度(畢竟有一部分情況只需要計(jì)算第一個(gè)表達(dá)式即可)
但是短路運(yùn)算也有其缺點(diǎn),就是不夠嚴(yán)謹(jǐn),特別是部分情況下還是需要運(yùn)算第二個(gè)表達(dá)式。所以很多語言都有提供短路版本和非短路版本的與運(yùn)算和或運(yùn)算。

嘗試以下示例來了解VB.Net中提供的所有邏輯/按位運(yùn)算符:

Module logicalOp

    Sub Main()
        Dim a As Boolean = True
        Dim b As Boolean = True
        Dim c As Integer = 5
        Dim d As Integer = 20
        'logical And, Or and Xor Checking
        If (a And b) Then
            Console.WriteLine("Line 1 - Condition is true")
        End If
        If (a Or b) Then
            Console.WriteLine("Line 2 - Condition is true")
        End If
        If (a Xor b) Then
            Console.WriteLine("Line 3 - Condition is true")
        End If
        'bitwise And, Or and Xor Checking
        If (c And d) Then
            Console.WriteLine("Line 4 - Condition is true")
        End If
        If (c Or d) Then
            Console.WriteLine("Line 5 - Condition is true")
        End If
        If (c Or d) Then
            Console.WriteLine("Line 6 - Condition is true")
        End If
        'Only logical operators
        If (a AndAlso b) Then
            Console.WriteLine("Line 7 - Condition is true")
        End If
        If (a OrElse b) Then
            Console.WriteLine("Line 8 - Condition is true")
        End If

        ' lets change the value of  a and b 
        a = False
        b = True
        If (a And b) Then
            Console.WriteLine("Line 9 - Condition is true")
        Else
            Console.WriteLine("Line 9 - Condition is not true")
        End If
        If (Not (a And b)) Then
            Console.WriteLine("Line 10 - Condition is true")
        End If
        Console.ReadLine()
    End Sub
End Module

當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生以下結(jié)果:

Line 1 - Condition is true
Line 2 - Condition is true
Line 4 - Condition is true
Line 5 - Condition is true
Line 6 - Condition is true
Line 7 - Condition is true
Line 8 - Condition is true
Line 9 - Condition is not true
Line 10 - Condition is true
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)