在學習編程中,&和&& 被解釋為:&&是邏輯操作符,而&是位操作符,但是它們的具體使用上的區別是什麼呢?
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。