&& || 谁的优先级高啊

解决方案 »

  1.   

    && 和|| 优先级别按从左到右的顺序
    上面的代码输出结果为4.
      

  2.   

    短路运算符原因.
    应该只有两次y的自加的原因.
    如果是&&时,出现false就不再进行后面的运算.
    如果是||时,出现true就不再进行后面的运算.
    好像应该这样解释吧.:P
      

  3.   

    楼上说对了,那请解释一下|的问题,就散分,为什么有了|以后 X && Y | Z ==> X&&(Y|Z)
      

  4.   

    如果是  X && Y | Z
    结果应该是五吧.
    因为|两边是布尔运算值时,是可以作为逻辑运算的.只是不能用作短路方式.所以y要自加三次.
      

  5.   

    x && y | z
    好象没有结果输出啊
      

  6.   

    class Test 
    {
    public static void main(String[] args) 
    {
    int x = 1;
    int y = 2;
                System.out.println(""+((y++>2) && (y++<2) | (y++>2)));
    if ( (y++>2) && (y++<2) | (y++>2))
        System.out.println(y);
    }
    }(y++>2) && (y++<2) | (y++>2)的结果为false,当然应该是没有输入的啊,但我写的这段代码,输出结果是:
    false
    6谁能解释一下啊??我已经被绕晕了
      

  7.   

    哦,,明白了。
    我在这一条System.out.println(""+((y++>2) && (y++<2) | (y++>2)));后y的值为:3;
    再运行下面的if ( (y++>2) && (y++<2) | (y++>2))就为true,又自加三次,结果为6.
      

  8.   

    为什么(y++>2) && (y++<2) | (y++>2)的值为false 
    System.out.println(y);还会执行呢?