在學習編程中,&和&& 被解釋為:&&是邏輯操作符,而&是位操作符,但是它們的具體使用上的區別是什麼呢? 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 bool a = (i > 5) && ((i = i + 5) > 10); //................(1)
6 bool b = (j > 5) & ((j = j + 5) > 10); //................(2)
7 bool c = (k > 15) && ((k = k + 5) > 10);//................(3)
8 bool d = (h > 15) & ((h = h + 5) > 10); //................(4)
請看上圖輸出結果:
對於(1)來說,i > 5 為True,(i = i + 5) > 10為True,那麼a就為True,即,兩者都為True則a為True。此時i=13。
對於(2)來說,j > 5為True,(j = j + 5) > 10為True,那麼b就為True,即,兩者都為True則a為True。此時j=13。
對於(3)來說,k > 15為False,(k = k + 5) > 10為True,那麼c就為False,即,一True一False則c為False。此時k=8。
對於(4)來說,h > 15為False,(h = h + 5) > 10為True,那麼d就為False,即,一True一False則d為False。此時h=13。
由此可以總結一句話:
&&:邏輯與,兩True才為True,一False即為False。即:兩真才為真,一假即為假。
& :邏輯與,兩True才為True,一False即為False。即:兩真才為真,一假即為假。
區別:
表達式(1) && 表達式(2),只有表達式(1)為True時,表達式(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的值的二進位為0100,對應的十進位為4。