邏輯運算子

2021-10-02 03:17:18 字數 1981 閱讀 7392

"&&"運算子:當左邊所給表示式或變數為0時,不再計算右側,整個表示式為零。

//&&

void function(int a,int b,int c)

else

//0040b518 cmp dword ptr [ebp+8],1 引數a和1比較

//0040b51c jle function+39h (0040b539) a小於等於1則跳轉到0040b539(else),下面的不執行

//0040b51e cmp dword ptr [ebp+0ch],1 若ebp+8(a)大於1則繼續執行引數b和1比較

//0040b522 jle function+39h (0040b539) b小於等於1則跳轉到0040b539(else),下面的不執行

//0040b524 cmp dword ptr [ebp+10h],1 若ebp+0c(b)大於1則繼續執行引數c和1比較

//0040b528 jle function+39h (0040b539) c小於等於1則跳轉到0040b539(else),下面的不執行

//0040b52a push offset string "ok\n"

(0041f10c)

//0040b52f call printf

(0040b780)

//0040b534 add esp,4

//0040b537 jmp function+46h (0040b546)

//0040b539 push offset string "error"

(0041f130)

//0040b53e call printf

(0040b780)

//0040b543 add esp,4

}只有所有條件都成立時才會繼續執行語句

"||"運算子:兩個或多個布林值中任何乙個值為true(或者都為true),則返回值為true。如果多個運算子都是false,則返回值為false。

void function(int a, int b, int c)

//0040b518 cmp dword ptr [ebp+8],1 引數a與1比較

//0040b51c jg function+2ah (0040b52a) 若a大於1則跳轉到40b52a(執行部分),若不成立順序執行

//0040b51e cmp dword ptr [ebp+0ch],1 a小於等於1時繼續用引數b和1比較

//0040b522 jg function+2ah (0040b52a) 若b大於1則跳轉到40b52a,不成立繼續執行

//0040b524 cmp dword ptr [ebp+10h],1 b小於等於1時繼續c和1比較

//0040b528 jle function+37h (0040b537) 若c不成立,則直接跳過執行部分

//0040b52a push offset string "ok\n"

(0041f10c)

//0040b52f call printf

(0040b780)

//0040b534 add esp,4

}

「!「運算子:

" !0」 這個邏輯表示式的值為1.(判斷的這個數為0,成立,則其表示式的值為1)

" !1」 這個邏輯表示式的值為0.(判斷的這個數非0,不成立,則其表示式的值為0)

void function(

)else

}

邏輯運算子( , )

操作!是的 運算子不執行布林操作,有只有乙個運算元,位於其權利,和唯一,它確實是逆是它的價值,生產假如果真實,真實的,如果其運算元其運算元為false。基本上,它返回布林值,評價其運算元相反。例如 1 2 3 4 5 5 evaluates to false because the expressi...

邏輯運算子

邏輯運算子 符號 作用 符號 作用 或and 與 或 not 非 或or 或 xor 異或 與 運算 1 或者 and 是 與 運算的兩種表達方式。如果所有資料不為0且不為空值 null 則結果返回1 如果存在任何乙個資料為0,則結果返回0 如果存在乙個資料null且沒有資料為0,結果返回null。...

邏輯運算子

邏輯與 當兩個運算元的值都為true時,運算結果為true 邏輯或 只要兩個運算元中有乙個值為true時,運算結果就為true 邏輯非 對運算元取反,即true值非運算的結果false,false值非運算的結果為true 案例 test1 var a 1,b 0,c hello a b c worl...