我們將||和&&定義為邏輯運算子,而|和&定義為位運算子。
&& 如果兩個運算元都非零,則條件為真;
|| 如果兩個運算元中有任意乙個非零,則條件為真。
& 按位與操作,按二進位制位進行"與"運算。運算規則:(有 0 則為 0)
0&0=0;
0&1=0;
1&0=0;
1&1=1;
| 按位或運算子,按二進位制位進行"或"運算。運算規則:(有 1 則為 1)
0|0=0;
0|1=1;
1|0=1;
1|1=1;
那麼,問題來了,在判斷語句中,用 | 還是 ||,& 還是 &&?
判斷語句中為布林型別,值只有 true 和 false(如果變數值為 0 就是 false,否則為 true)
舉個例子,a=1 b=2
所以 a>0 這個值為true b>1 這個值為true b>2 這個值為 false
如 if(a>0&b>1) 我們可以得出 if(true&true),條件成立(true不為0,所以true&true不為0)
如 if(a>0&&b>1) 我們可以得出 if(true&&true),條件成立(&&兩邊運算元都非零,所以條件成立)
如 if(b>2&a>0) 我們可以得出 if(false&true),條件不成立(false為0,false&true為0,條件不成立)
如 if(b>2&&a>0) 我們可以得出 if(false&&a>0),條件不成立(&&左側為false,&&運算到此結束,條件不成立)
可以看出 & 和 && 在判斷語句中都可以實現「和」這個功能,不過區別在於 & 兩邊都運算,而 && 先算 && 左側,若左側為 false 那麼右側就不運算了。因此從效率上來說,判斷語句中推薦使用 &&(換句話就是邏輯運算就老老實實用邏輯運算子,不然它為啥叫邏輯運算子呢?)
而 | 和 || 的比較與上類似,不做贅述。
和 , 和 的區別
是邏輯與 短路與 當第乙個判斷條件不滿足要求時 返回false 第二個判斷條件就不會執行 只有當兩個判斷條件都返回true時,整個邏輯運算才返回true。按位與,不論什麼情況下,兩邊的判斷條件都會執行,當兩邊都返回true時,按位與才返回true。邏輯或,當第乙個判斷條件返回true時,邏輯或直接返...
和 和 的區別
和 相同之處 和 都表示 符號兩端必須同時為真,最後的結果為真 其中一端為假,則最後的結果為假 不同之處 用 時,左端為假,還需要繼續判斷右端真假 用 時,左端為假,則不需要判斷右端真假,即右端不需要進行運算 和 相同之處 和 都表示 符號兩端中有一端為真時,最後的結果為真 兩端都為假時,最後的結果...
和 , 和 的區別
邏輯運算子 和 都表示且,和 都表示或,單拼和雙拼的區別在於 是否會對後續操作進行短路。對於 且 操作,有全真則真,一假則假的判斷規則。在使用 時,一旦判斷出前乙個表示式為假,程式會像我們做數學題一樣,立刻終止判斷,短路後面的表示式 但在使用 時,程式還會繼續執行第二個表示式 下面兩段 分別對 和 ...