正確使用 (按位或)和 (邏輯或)

2022-09-17 06:54:11 字數 342 閱讀 1266

最近發現有些人寫source時,分不清|(按位或)和||(邏輯或)

if(!$requestcategorys|!in_array($itemcategory['roleid'],$requestcategorys))

else

這樣寫的結果是不管!$requestcategorys是true或false,in_array函式總會執行,因為這是按位或,|在計算前,前後存在的表示式都要先計算完畢。

所以正確的做法如下: 

if(!$requestcategorys||!in_array($itemcategory['roleid'],$requestcategorys))

else

詳解「 按位與 按位或 按位異或」

按位與 按位或 按位異或 1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 0000...

2019 9 02 按位或,按位與, 按位異或

a b a a b a 或者 b 只要有乙個為 1,那麼,a 的最終結果就為 1 a b a a b a 和 b 二者必須都為 1,那麼,a 的最終結果才為 1 a b a a b 當且僅當 a 和 b 的值不一致時,a 的最終結果才為1,否則為0 計算時,先把其化為二進位制數 如 5 0101 3...

位與 按位或 按位異或 運算

1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 00000001 1的二進位制補碼...