java吧 关注:1,221,662贴子:12,675,291
  • 4回复贴,共1

求助:我是新手,遇到困难!

只看楼主收藏回复

public class App
{
public static void main(String[] args)
{
int n=3;
int m=4;
System.out.println();
System.out.println("compare result is "+((n>m)&&(++n)>m));
System.out.println("m is "+m+"; n is"+n);
System.out.println("compare result is "+((n<m)||(++n)>m));
System.out.println("m is "+m+"; n is "+n);
}
}
/*运行结果
compare result is false
m is 4; n is 3
compare result is true
m is 4; n is 3
*/
/*问题
为什么“System.out.println("compare result is "+((n<m)||(++n)>m));”输出的值是compare result is true 而不是false?
求详细解释,新手,见谅!
*/



IP属地:四川1楼2012-02-07 16:17回复
    逻辑判断时的短路现象。。。


    2楼2012-02-07 16:25
    回复
      n=3 < m=4 成立,所以为true.然后用||,最后肯定为true。
      打印语句里面的++n其实都没有执行过。
      第一句,因为是“与”,所以左边为假,总的肯定是假,所以就不用算后面了。
      第二句,因为是“或”,所以左边为真,总的肻定是真,所以不用算后面了。


      IP属地:广东3楼2012-02-07 16:25
      回复
        我懂了谢谢。


        IP属地:四川4楼2012-02-07 16:58
        回复
          谢谢。


          IP属地:四川5楼2012-02-07 16:58
          回复