逻辑与(&)和逻辑或(|) VS 短路与(&&)和短路或(||)

转载 2013年12月04日 09:56:32

1.  逻辑与(&)和逻辑或(|) 位运算符,
        标准的逻辑与(&)和逻辑或(|),不论第一个表达式为true or false,都计算第二个表达式。
        例如:if (c==0 | e++ < 100)  { d=12;}     //不论c是否等于0,e都被自增量。

2.  短路与(&&)和短路或(||)
        A&&B, 当A为false时,不去计算B的值而直接返回false;当A为true时,计算B的值。
        A || B,当A为true时, 不去计算B的值而直接返回true;当A为false时,计算B的值。

3.应用比较
        短路&& 是很有用的。例如,下面的程序语句说明了短路逻辑运算符的优点,用它来防止被0除的错误: 
        if (denom != 0 && num / denom > 10)  
        既然用了短路与(&&) 运算符,就不会有当denom为0时产生的意外运行时错误。如果该行代码使用标准与 运算符(&),它将对两个运算数都求值,当出现被0除的情况时,就会产生运行时错误。

         既然短路运算符在布尔逻辑运算中有效,那么就在布尔逻辑运算中全用它,而标准的AND 和OR运算符(只有一个字符)仅在位运算中使用。


 4. Java四大运算符:算术运算符、位运算、关系运算、逻辑运算

    另外还有比较运算符(instanceof)

            A>     算术与位运算就不说了,一般不容易出错

            B>     关系运算符:   ==    >     <     <=    >=    !=

                        关系运算的结果为boolean,只有true和false,不像C/C++中,非0为true,0为false。
                        boolean flag= a<c;  //这种写法是正确的.
                        例如: if(a == b) {}     //如果是正确的,进行运算; 

                        赋值运算符 = 是赋值的,  如: int a = 5;        //不是 int a == 5;

            C>     布尔逻辑运算符
                      布尔逻辑运算的运算数只能是布尔型,结果也为boolean型

                       逻辑与(&)和逻辑或(|)  及   短路与(&&)和短路或(||) 的区别见上。


<骑猪闯天下>

啥叫"短路逻辑"

从Python中的理解:if a and b:#如果a是false,那么跳过b的判断,结果直接false if a or b:#如果a为true,那么跳过b的判断,直接true从Jave中认清逻辑操...
  • qq_32637233
  • qq_32637233
  • 2016年03月28日 19:46
  • 1384

C语言逻辑运算的短路特性

原理:(表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路” (表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路” 举例...
  • meetings
  • meetings
  • 2015年03月14日 16:54
  • 1935

js中的短路运算符

最近看到一个360面试题,题目如下:       下面代码的输出值是? alert(1&&2); 正确的结果是 2. 1.后来仔细研究了一下JS逻辑运算的相关内容,在MDN上面...
  • Jason_We
  • Jason_We
  • 2017年05月06日 14:07
  • 626

c++ || && 逻辑短路问题

结论:“或”逻辑前面为1,“与”逻辑前面为0就会发生短路 1——或逻辑短路 include int main() { int a=5,b=6,c=7,d=8,m=2,n=2; (...
  • u010229420
  • u010229420
  • 2016年10月26日 14:15
  • 2304

java中短路与、逻辑与、短路或、逻辑或

/** * Created by cxh on 17/07/21. * 几个名词的定义和它们之间的区别 * 短路与 && eg:条件1 && 条件2 ,执行过程:如果条件1成立,则继续计算...
  • caoxiaohong1005
  • caoxiaohong1005
  • 2017年07月21日 18:01
  • 132

短路求值实现逻辑

为了实现逻辑和返回真实,两个操作数必须评估为真。如果第一个操作数计算为错误的,逻辑的,知道它必须返回错误,无论第二个操作数是否计算为真或假。在这种情况下,逻辑和运算符将继续进行,并立即返回错误,甚至没...
  • shazhugw
  • shazhugw
  • 2016年12月13日 17:15
  • 363

php或且非运行机制(短路机制)

php或且非运行机制(短路机制)$a and $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。 $a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一...
  • qq_26291823
  • qq_26291823
  • 2016年07月17日 11:22
  • 561

Java中逻辑表达式的短路(先理解运算符的优先级)

在学习Java中逻辑表达式中的短路机制之前, 我们必须明确一点: 就是运算符优先级与执行顺序的问题,  运算符优先级高的表达式在执行时会被视为一个整体,  但是对于除赋值符外的所有二元运算符来说,  ...
  • libertine1993
  • libertine1993
  • 2015年08月09日 18:36
  • 1838

lua中逻辑运算符and与or的用法

逻辑运算符认为false和nil是假(false),其他为真,0也是true. and的优先级比or高 其它语言中的and表示两者都为真的时候,才返回为真,而只要有一个假,都返回假.lua虽不仅返...
  • fuyuehua22
  • fuyuehua22
  • 2014年11月02日 22:38
  • 2352

短路逻辑和延迟加载

http://www.cnblogs.com/jeffwongishandsome/archive/2012/08/05/2623810.html 一、短路逻辑 短路逻辑(short-...
  • mituan1234567
  • mituan1234567
  • 2014年07月09日 16:44
  • 329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:逻辑与(&)和逻辑或(|) VS 短路与(&&)和短路或(||)
举报原因:
原因补充:

(最多只允许输入30个字)