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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  int x = 1,y = 1;


  if(x++==2 && ++y==2)

  {

   x =7;

  }

  System.out.println("x="+x+",y="+y);

结果为什么是 x=2 , y= 1 ?


6 个回复

倒序浏览
我知道了。。。因为&&  和 || 都是短路 语句。。。
回复 使用道具 举报
学习小菜鸟
回复 使用道具 举报
x++是先比较再自增  先比较x==2  发现不等 然后自增  x就等于2   短路语句 遇fase则fase   后半句就不看了  所以y=1
回复 使用道具 举报
974839876 发表于 2016-8-25 22:56
x++是先比较再自增  先比较x==2  发现不等 然后自增  x就等于2   短路语句 遇fase则fase   后半句就不看了  ...

谢谢
回复 使用道具 举报
因为&&具有短路的作用,x++ == 2已经为true,所以&&短路,后面的++y没有被执行到,因此y不变
回复 使用道具 举报
因为&&具有短路的作用,x++ == 2已经为false,所以&&短路,后面的++y没有被执行到,因此y不变
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马