速览
&: (1)按位与1&1=1 1&0=0 0&0=0 (2)&var =var 的地址
&&: 判断两真为真其余全为假:if(a==0&&b==0)
意思就是if a为0并且b为0的时候,执行下一步操作。
|: 按位或1|1=1 1|0=1 0|0=0
||:判断有一真即为真否则为假:if(a==0||b==0)
意思就是if a为0或者b为0的时候,执行下一步操作。
&&
(1)逻辑与,即为and:当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。表示如果两个条件都成立则执行之后的逻辑。
eg:
12&&23=1// 此时条件判断为真
12&&-1=1// 此时条件判断为真
123&&0=0// 此时条件判断为假
if(a==0&&b==0),意思就是if a为0并且b为0的时候,执行下一步操作。
(2)&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。
eg:if(str != null && !str.equals(“”))
,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException
&
(1)&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。
二进制与运算规则:1&1=1 1&0=0 0&0=0
eg: 2&3=2?
2二进制: (10)
3二进制: (11)
按位与自然就是(10)=2
(2)& 也是取地址符
&var 读作"var 的地址"。
var = 3000;
// 通过取地址符&获取 var 的地址
ptr = &var;
// 再通过运算符是间接寻址运算符 *获取 ptr 的值
val = *ptr;
var :3000
ptr :0xbff64494
val :3000
||
逻辑或,是逻辑运算符,符号是“||”(在PASCAL中为"or")。 “逻辑或”相当于生活中的“或者”。
eg:
A||B,只有当A为假的时候才会对B进行判断。若A为真,则不继续对B进行判断。
12||1 =1 // 此时条件两真判断为真
12||0 =1 // 此时条件一真一假判断为真
0||0 =0 // 此时条件两假判断为假
if(a==0||b==0),意思就是if a为0或者b为0的时候,执行下一步操作。
|
按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位(也就是最后一位)相或,只要对应的二个二进位有一个为1时,结果位就为1。
二进制与运算规则:1|1=1 1|0=1 0|0=0
eg:
A|B,会对A, B都进行判断。
128: (0001 0000 0000)
127: (0000 1111 1111) (高位用0补齐)
按位或就是(0001 1111 1111)=255
!
称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。
此篇仅用于简单区分,其他参考C++ 运算符 | 菜鸟教程 (runoob.com)