1 "&&" 逻辑与,"||" 逻辑或
例: result = func1&&func2;/*func1和func2两个都为真,result才为真,否则为假*/
result = func1||func2;/*func1和func2只要有一个为真,result就为真;func1和func2两个都为假,result才为假*/
2 "&" 位逻辑与,"|" 位逻辑或
例:0&0 = 0;
0&1 = 0;
1&0 = 0;
1&1 = 1;(有0则为0)
0|0 = 0;
0|1 = 1;
1|0 = 1;
1|1 = 1;(有1则为1)
区别:
&是将两个二进制的数逐位相与,结果是相与之后的结果;&&就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。
|和||同理。
例: 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那么右侧就不运算了。因此从效率上来说,判断语句中推荐使用 &&。