我知道按位运算符&,|和^ 是按位运算符或逻辑运算符...取决于操作数的类型。
如果操作数是整数,则运算符是按位的。如果它们是 布尔运算符,然后运算符是合乎逻辑的。
那么为什么有逻辑运算符&&,||和!?我相信会有一些情况,我们只能使用逻辑运算符,因此它们是。
那么,任何人都可以解释这种情况吗?或者比按位操作有任何优势。
答案 0 :(得分:7)
运营商&&和||评估懒惰。这意味着只能评估一方。
运营商&和|评估急切,这意味着始终对双方进行评估。
表达式有副作用时非常重要。
实施例
x = 0;
(x++ == 0) || (x++ == 1); // x is 1
x = 0;
(x++ == 0) | (x++ == 1); // x is 2
答案 1 :(得分:2)
逻辑运算符&&,||让你short circuit
逻辑。
1==1 || complexMethod(/*param*/)
complexMethod()不会执行。
1==1 | complexMethod(/*param*/)
complexMethod()将执行。
短路基本上意味着条件将仅在必要时评估,而不是超出。
答案 2 :(得分:1)
例如:
请参阅&&
if(Condition1 && condition2){
}
和||
if(Condition1 || condition2){
}
在这些情况下
其中第二个参数仅在第一个参数不足以确定表达式的值时执行或计算: