黑马程序员技术交流社区

标题: 这个题的结果没看懂,哪位可以帮解释一下? [打印本页]

作者: ok-Prince    时间: 2014-4-2 12:55
标题: 这个题的结果没看懂,哪位可以帮解释一下?
本帖最后由 ok-Prince 于 2014-4-2 13:10 编辑
  1. class Cz1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x=0,y=1;
  6.                 if(++x==y--&x++==1||--y==0)
  7.                         System.out.println("x="+x+",y="+y);
  8.                 else
  9.                         System.out.println("y="+y+",x="+x);
  10.         }
  11. }
复制代码

其结果是x=2,y=0,x=2我看懂了,x自增了2次,可是y为什么是0呢,y不是也自减了两次么?
作者: osully    时间: 2014-4-2 13:02
||   左边true 右边不运行
&&  左边false 右边不运行
作者: 董振冬    时间: 2014-4-2 13:06
本帖最后由 董振冬 于 2014-4-2 13:13 编辑

++x    等于  x = x+1;++x =  y --  等于  ++x = y ; y--,此时y还是等于1的,然后执行y-- ,y=0,条件成立   || 或者符号   一个条件成立即可执行结果,后的--y不执行了。。over。
作者: ok-Prince    时间: 2014-4-2 13:09
osully 发表于 2014-4-2 13:02
||   左边true 右边不运行
&&  左边false 右边不运行

:dizzy:So easy...谢谢。。
作者: 相见欢    时间: 2014-4-2 13:12
我也看不懂
作者: _Water    时间: 2014-4-2 13:14
首先看if 条件语句中的第一部分++x==y--&x++==1, &代表是位与,第一个条件不符合的情况下中断,如false&true. 则不会判断true  ,返回false  ;
++x==y-- ,这一步的结果是ture,x++==1,这一步的结果也是ture,所以整个的if条件语句的第一部分++x==y--&x++==1返回结果是true。实际上||后面的语句--y==0是不会执行的,所以对于y而言只执行了一次y=y-1;的操作。即y最后的结果是0




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2