精华内容
下载资源
问答
  • 逻辑运算的短路现象

    2010-03-05 17:04:00
    //BooleanCalculation.java public class BooleanCalculation{ ...System.out.println("逻辑运算结果:"+result); System.out.println("b结果是:"+b); System.out.println("d结果是:"+d); } }
    //BooleanCalculation.java
    public class BooleanCalculation{
    public static void main(String[] args){
    int a=1,b=2,c=3,d=4;
    boolean result;
    result=(a>(b=b+1))&&(c>(d=d+1));
    System.out.println("逻辑运算式的结果:"+result);
    System.out.println("b的结果是:"+b);
    System.out.println("d的结果是:"+d);
    }
    }
    展开全文
  • 当使用逻辑操作符时,我们会遇到一种“短路现象。即一旦能够明确无误地确定整个表达式值,就不再计算表达式余下部分了。因此,整个逻辑表达式靠后部分有可能不会被运算。下面对这个现象进行演示: public ...

    当使用逻辑操作符时,我们会遇到一种“短路”现象。即一旦能够明确无误地确定整个表达式的值,就不再计算表达式余下部分了。因此,整个逻辑表达式靠后的部分有可能不会被运算。下面对这个现象进行演示:

    public class ShortCircuit{
    //执行test1()时打印出执行信息
    static boolean test1(int val){
    System.out.println("test1("+val+")");
    System.out.println("result: " + (val<1));
    return val<1;
    }
    //执行test2()时打印出执行信息
    static boolean test2(int val){
    System.out.println("test2("+val+")");
    System.out.println("result: " + (val<2));
    return val<2;
    }
    //执行test3()时打印出执行信息
    static boolean test3(int val){
    System.out.println("test3("+val+")");
    System.out.println("result: " + (val<3));
    return val<3;
    }
    public static void main(String[] strs){
    boolean b = test1(0)&&test2(2)&&test3(2);
    System.out.println("expression is: " + b);
    }
    }

    每个测试都会比较参数,并返回true或false。它也会打印信息告诉你正在调用测试。这些测试都作用于下面这个表达式:

    test1()&&test2()&&test3()

    显示结果为:

    test1(0)
    result: true
    test2(2)
    result: false
    expression is: false

    你会很自然地认为所有这三个测试都会得以执行。但输出显示却并非这样。第一个测试生成结果true,所以表达式计算会继续下去。然后,第二个测试产生了一个false结果,由于这意味着整个表达式肯定为false,所以没必要继续计算剩余的表达式,那样只是浪费。“短路”一词来源于此。事实上,如果所有逻辑表达式都有一部分不必计算,那将获得潜在的性能提升。

     

    推荐一个自己业余时间开发的网盘搜索引擎,360盘搜www.360panso.com

    转载于:https://www.cnblogs.com/eczhou/archive/2011/12/07/2279268.html

    展开全文
  • 短路的情况下程序可以继续运行只不过部分条件表达式被忽略了不进行运算 import java.util.*; public class GSX52 { static boolean test1(int val){ System.out.println("test1("+val+")"); System.out.println(...

    > 短路:并不是断路;短路的情况下程序可以继续运行只不过部分条件表达式被忽略了不进行运算

    import java.util.*;
    public class GSX52 {
        static boolean test1(int val){
            System.out.println("test1("+val+")");
            System.out.println("result: "+(val<1));
            return val<1;
        }
        static boolean test2(int val){
            System.out.println("test2("+val+")");
            System.out.println("result: "+(val<2));
            return val<2;
        }
        static boolean test3(int val){
            System.out.println("test3("+val+")");
            System.out.println("result: "+(val<3));
            return val<3;
        }
        public static void main (String[] args){
            boolean b= test1(0)&&test2(2)&&test3(3);
            System.out.println("expression is " +b);
            }
    }
    
    
    

    运行结果配图
    在这里插入图片描述

    在本例中 方法test3()是不会被运算的,因为表达式:

    boolean b= test1(0)&&test2(2)&&test3(3); 
    

    在计算到test1() 和test2()时结果就应经出来了,因此test3()就会被短路(不在进行运算)

    展开全文
  • 短路特性包括(短路现象常见有) : 短路与(&&)和短路或(||)>若a && b ,如果a 值为假,则整个表达式值就为假,它是从左向右计算。所以执行该表达式后,b 值还是它初始值,即不进行运算。 例如:(m=...

    今天刷题的的时候,看到讨论里有人用短路特性实现递归终止,觉得好高大上,我是个小白,还请见谅,那么就学习了下什么叫短路特性?

    短路特性包括(短路现象常见的有) :

    短路与(&&)和短路或(||)

    • >若a && b ,如果a 的值为假,则整个表达式的值就为假,它是从左向右计算的。所以执行该表达式后,b 的值还是它的初始值,即不进行运算。

    例如:(m=a>b)&&(n=c>d),当a b c d 分别为1,2,3,4,m =n =1时,由于a >b 为0,则m =0。而后面的不再执行,所以n=1而不是0。

    • >若a || b ,如果a 的值为真,整个表达式的值就为真,执行顺序同上。b 的真假由最初的真假来判断,也就是说,当a 为真时,b 则不进行运算了。

    总结:

    所以短路现象其实是跟逻辑运算的特性相关的, 然后有意识的注意一下“计算机也会偷懒”,就是这样简单。


    另外附上我做的那道题,非常简单啦,就是要注意下 短路与特性 做为递归终结条件的使用,用好了非常简洁。

    求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

    class Solution {
    public:
        int Sum_Solution(int n) {
            int ans = n;
            ans && (ans += Sum_Solution(n - 1)); //短路与特性的使用
            return ans;
        }
    };

    那么小白我是怎么写的呢,大家可以对比下:

    class Solution {
    public:
        int Sum_Solution(int n) {
            if(n>=1)
                return n + Sum_Solution(n-1);
            else
                return 0;
    
        }
    };

    希望大家能学到一点东西,不要像我当小白
    ——————————————————–超小白

    展开全文
  • 、||,其原理是:当有多个表达式时,左边表达式值可以确定结果时,就不再继续运算右边表达式值。 以如下代码为例,本意是先执行di0_init和di1_init两个函数,再根据其返回值确定是否创建线程操作: static int...
  • java布尔类型进行逻辑运算和按位运算的区别 从结果上,2种运算结果都是一样,但逻辑运算会有“短路”现象,按位的没有,而按位又比逻辑运算多了“异或”功能。 短路现象 class br { static boolean f1() { return ...
  • 短路现象总结

    2019-07-27 21:00:45
    逻辑运算中“短路现象是指,仅计算逻辑表达式中一部分便能确定结果,而不对整个表达式进行计算的现象。给你举个例子: 表达式:( a == 0 || b ==1) ,只要a == 0为真时,整个表达式结果就肯定是真,故不会再对...
  • Java当使用逻辑操作符时,我们会遇到一种“短路现场。即一旦能够明确无误地确定整个表达式值,就不再计算表达式剩余部分了。因此,整个逻辑表达式靠后部分有可能不会被运算。——《Java编程思想》 这一点...
  • 逻辑运算符短路” ...连接三个条件顺序,其原理是利用逻辑运算符短路”,即便index自增到s1.length()或s2.length(),一旦前边两个条件运算结果为假,就不再进行s1.charAt(index) == s2.charAt(index),.
  • JAVA 短路现象

    2011-10-20 10:21:26
    使用逻辑操作符时,我们会遇到一种“短路现象”,即一旦能够明确无误地确定整个表达式值,就不在计算表达式余下部分了。所以,整个逻辑表达式靠后部分有可能不会被运算。...
  • 程序中的短路算法现象一、逻辑与(&&)中的短路。二、逻辑或(||)中的短路。总结 一、逻辑与(&&)中的短路。   逻辑与的运算符为&&, 其运算规则为,对于expr1 && expr2,只有当expr1和...
  • 什么是“逻辑短路

    千次阅读 2016-12-29 14:47:53
    逻辑短路是对于逻辑运算而言,是指,仅计算逻辑表达式中一部分便能确定结果,而不对整个表达式进行计算的现象。 对于“&&”运算符,当第一个操作数为false时,将不会判断第二个操作数,因为此时无论第二个操作数...
  • 因为逻辑运算的3种运算是很明确的,如果整个表达式中有一个部分的值为false,且该部分和其他部分构成与关系,则不必计算其他部分的值,就可以知道整个表达式的值为false。但是在按位运算中不存在逻辑短路现象,因为...
  • 短路现象

    2018-06-21 16:22:00
    当使用逻辑操作符时,我们会遇到一种“短路现象。即一旦能够明确无误地确定整个表达式值,就不再计算表达式余下部分了。因此,整个逻辑表达式靠后部分有可能不会被运算。 1 public class practice { 2 ...
  • 逻辑运算符 and:逻辑与,当两个操作数都等价于True时,结果为第二个操作数的值,输出可以为等价于True的非布尔型数据 当有一个操作数等价于False,结果为第一个等价于False的操作数的值。...逻辑运算的短路现象
  • 短路与&& 和 逻辑与& 有什么区别

    多人点赞 热门讨论 2020-06-29 09:40:20
    首先这两个运算符的运算结果没有任何区别,完全相同 只不过“短路与&&”会发生短路现象 1.什么是短路现象呢? 右边表达式不执行,这种现象叫做短路现象。 2.什么时候使用&&,什么时候使用&...
  • 短路

    2019-06-20 14:53:58
    当使用逻辑操作符时,我们会遇到一种“短路现象。意思也就是说一旦明确整个表达式值,那么就不再计算剩余表达式部分了。因此,整个表达式靠后部分有可能就不会被运算。 例子: public class ShortCircuit...
  • 1、位运算符能对Boolean类型和数值类型进行逻辑运算,而逻辑运算符只能 对Boolean类型进行逻辑运算。 2、逻辑运算符有短路现象,即前面表达式得到结果时,后面表达式将不会再 执行;而位运算符不会有短路现象。 ...
  • **逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。 逻辑运算符有短路情况,即...注:逻辑运算符的短路现象:在执行逻辑或时,如果 “||” 前面的表达式成立,“||” 后面的将不再...
  • 目录 一、符号运算有什么差别 二、差别是什么 三、差异原因在哪里 ..."会发生短路现象。 什么是断路现象? 在这里我们讨论短路与和逻辑区别,断路或和逻辑或可以以此类推。 intx=10;inty=1...
  • 逻辑运算符

    2020-08-14 08:41:45
    & 逻辑与 【并且】(两边算子都是true,结果才是true...短路与和逻辑最终运算结果是相同,只不过短路与存在短路现象。 短路或和逻辑最终运算结果是相同,只不过短路或存在短路现象。 5 > 3 &
  • C语言短路和或断路

    千次阅读 2019-10-17 10:34:39
    在C语言的逻辑运算符中,我们知道有两个现象,与短路和或断路 所谓与短路: 就是a&&b时,当a为假时,不需要判断整个表达式,不再计算与后面表达式,当a为真时,再判断后面表达式。 所谓或断路: 就是a||...
  • 第一个区别就是运算顺序,位运算符两端表达式都要进行计算,而逻辑运算符则不然,运算完第一个表达式之后如果已经判定整个表达式为真或假以后,便不再运算第二个表达式,这种现象又叫短路现象。以下程序演示了...
  • Java中的逻辑运算符

    2020-06-13 11:03:08
    逻辑运算符主要用于进行逻辑运算。Java 中常用逻辑运算符如下表所示: 我们可以从“投票选举”角度理解逻辑运算符: 1、与:要求所有人都投票同意,才能通过某议题 2、或:只要求一个人投票同意就可以通过...
  • java逻辑运算符

    2020-01-10 23:10:01
    /* 逻辑运算符: & 逻辑与 | 逻辑或 !逻辑非(取反 !false就是true, !true就是false) ^ 逻辑异或(两边算子只要不一样,结果...2.短路与和逻辑与最终的运算结果是相同,只不过短路与存在短路现象 3.短路或和逻...
  • 逻辑运算优先级,逗号用法 (1)可以用于表达区间 (2)判断是否大小写 注意:短路现象 左边成立右边不判断 逗号表达式基本是只用于for语句中。例如 for(i=1,j=10;i<j;i++,j–).
  • 1.java&&和&都表示and运算,当两边数都为true时候才为true时候才为真,否则为false、不同是,&...逻辑运算符存在短路的现象,即前边表达式可以得到最终结果是,后面
  • java之逻辑运算符

    2020-08-25 18:48:28
    在java的逻辑运算符中,有几类:&&(短路与)、&(与),||(短路或)、|(非短路或),|(非)与^(异或) 1,逻辑运算符要求两边算子都是布尔类型,最终结果也是布尔类型; 2,短路或,短路与和逻辑或,逻辑与...
  • 关系运算符 : > ,=,==,!= 返回的是个bool类型的 关系运算符高于赋值运算符低于一般算式运算符 ...逻辑运算的短路现象(就是说如果前面一个可以确定整个的结果,就不对后面运算了) 逻辑非

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

逻辑运算的短路现象