原文链接:https://www.runoob.com/note/34429
|| 和 && 为逻辑运算符, | 和 & 定义为位运算符。
&& 如果两个操作数都非零,则条件为真;
|| 如果两个操作数中有任意一个非零,则条件为真。
& 按位与操作,按二进制位进行"与"运算。0&0=0; 0&1=0; 1&0=0; 1&1=1;
| 按位或运算符,按二进制位进行"或"运算。0|0=0; 0|1=1; 1|0=1; 1|1=1;
在判断语句中,用 | 还是 ||,& 还是 &&?
判断语句中为布尔类型,值只有 true 和 false。
举个例子,a = 1, b = 2,a > 0 = true,b > 1 = true, b > 2 = false。
if (a > 0 & b > 1) 即 if (true & true),结果为 true
if (a > 0 && b > 1) 即 if (true && true),结果为 true
if (b > 2 & a > 0) 即 if (false & true),结果为 false
if (b > 2 && a > 0) 即 if (false && true),结果为 false
可以看出 & 和 && 在判断语句中都可以实现“与”这个功能,区别在于 & 两边都运算,而 && 先算 && 左侧,若左侧为 false 那么右侧就不运算了。因此从效率上来说,判断语句中推荐使用 &&。