A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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不是也自减了两次么?

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

5 个回复

正序浏览
首先看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

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 举报
我也看不懂
回复 举报
osully 发表于 2014-4-2 13:02
||   左边true 右边不运行
&&  左边false 右边不运行

:dizzy:So easy...谢谢。。
回复 举报
本帖最后由 董振冬 于 2014-4-2 13:13 编辑

++x    等于  x = x+1;++x =  y --  等于  ++x = y ; y--,此时y还是等于1的,然后执行y-- ,y=0,条件成立   || 或者符号   一个条件成立即可执行结果,后的--y不执行了。。over。

评分

参与人数 1黑马币 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 举报
||   左边true 右边不运行
&&  左边false 右边不运行
回复 举报
您需要登录后才可以回帖 登录 | 加入黑马