在學習編程中,||和| 被解釋為:||是邏輯操作符,而|是位操作符,但是它們的具體使用上的區別是什麼呢? 1、當||和|作為邏輯操作符時,看看它們都有什麼作用。請看下麵例子: 請看上圖輸出結果: 對於(1)來說,i > 5 為True,(i = i + 5) > 10為True,那麼a就為True, ...
在學習編程中,||和| 被解釋為:||是邏輯操作符,而|是位操作符,但是它們的具體使用上的區別是什麼呢?
1、當||和|作為邏輯操作符時,看看它們都有什麼作用。請看下麵例子:
1 int i = 8; 2 int j = 8; 3 int k = 8; 4 int h = 8; 5 int m = 8; 6 int n = 8; 7 bool a = (i > 5) || ((i = i + 5) > 10); //................(1) 8 bool b = (j > 5) | ((j = j + 5) > 10); //................(2) 9 bool c = (k > 15) || ((k = k + 5) > 10);//................(3) 10 bool d = (h > 15) | ((h = h + 5) > 10); //................(4) 11 bool e = (m > 15) || ((m = m - 5) > 10);//................(5) 12 bool f = (n > 15) | ((n = n - 5) > 10); //................(6)
請看上圖輸出結果:
對於(1)來說,i > 5 為True,(i = i + 5) > 10為True,那麼a就為True,即,兩者都為True則a為True。此時i=8。說明(i = i + 5) > 10沒有執行。
對於(2)來說,j > 5為True,(j = j + 5) > 10為True,那麼b就為True,即,兩者都為True則a為True。此時j=13。說明(j = j + 5) > 10執行了。
對於(3)來說,k > 15為False,(k = k + 5) > 10為True,那麼c就為True,即,一True一False則c為True。此時k=13。說明(k = k + 5) > 10執行了。
對於(4)來說,h > 15為False,(h = h + 5) > 10為True,那麼d就為True,即,一True一False則d為True。此時h=13。說明(h = h + 5) > 10執行了。
對於(5)來說,m > 15為False,(m = m + 5) > 10為False,那麼e就為False,即,兩者都為False則d為False。此時m=3。說明(m = m + 5) > 10執行了。
對於(6)來說,n > 15為False,(n = n + 5) > 10為False,那麼f就為False,即,兩者都為False則f為False。此時n=3。說明(n = n + 5) > 10執行了。
由此可以總結一句話:
||:邏輯或,兩False才為False,一True即為True。即:兩假才為假,一真即為真。
| :邏輯或,兩False才為False,一True即為True。即:兩假才為假,一真即為真。
區別:
表達式(1) || 表達式(2),只有表達式(1)為False時,表達式(2)才會執行。
表達式(1) | 表達式(2),無論表達式(1)為True或False,表達式(2)都會執行。
2、當|作為位操作符時,看看它有什麼作用。請看下麵例子:
1 int i = 6; //6的二進位為0110 2 3 i = (i | 5); //5的二進位為0101
請看上圖輸出結果:
當|為位操作符時,6和5進行了位運算,而6的二進位為0110,5的二進位為0101,邏輯&後,此時i的值的二進位為0111,對應的十進位為7。