1. 程式人生 > >C/C++ &與&& |與|| 的區別

C/C++ &與&& |與|| 的區別

&&

表示邏輯與的意思,即為and。當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。

比如 12&&23的結果就是1,12&&-1 的結果是1,123&&0的結果就是0

&&還具有短路的功能,即如果第一個表示式為false,則不再計算第二個表示式,例如,對於if(str != null && !str.equals(“”))表示式,當str為null時,後面的表示式不會執行,所以不會出現NullPointerException

&

表示按位與。

&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31 & 0x0f的結果為0x01。

二進位制與運算規則:1&1=1  1&0=0  0&0=0

15&127為什麼等於15啊? 

15二進位制: (0000 1111)

127二進位制: (1111 1111)

按位與自然就是(0000 1111)=15

||

表示邏輯或

 邏輯或,是邏輯運算子,符號是“||”(在PASCAL中為"or")。 “邏輯或”相當於生活中的“或者”,當兩個條件中有任一個條件滿足,“邏輯或”的運算結果就為“真”

12||1 =1  12||0 =1 0||0 =0

|

表示按位或

按位或運算 按位或運算子“|”是雙目運算子。其功能是參與運算的兩數各對應的二進位(也就是最後一位)相或。只要對應的二個二進位有一個為1時,結果位就為1。

128:     (0001 0000 0000)

127:     (0000 1111 1111) (高位用0補齊)

按位或就是(0001 1111 1111)=255