黑马程序员技术交流社区

标题: 大家看一下下面程序,结果为什么是y=1 ? [打印本页]

作者: 细听风语为梧桐    时间: 2016-8-25 19:54
标题: 大家看一下下面程序,结果为什么是y=1 ?

  int x = 1,y = 1;


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

  {

   x =7;

  }

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

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



作者: 细听风语为梧桐    时间: 2016-8-25 19:55
我知道了。。。因为&&  和 || 都是短路 语句。。。
作者: 1985206835long    时间: 2016-8-25 20:39
学习小菜鸟
作者: 974839876    时间: 2016-8-25 22:56
x++是先比较再自增  先比较x==2  发现不等 然后自增  x就等于2   短路语句 遇fase则fase   后半句就不看了  所以y=1
作者: 细听风语为梧桐    时间: 2016-8-27 21:35
974839876 发表于 2016-8-25 22:56
x++是先比较再自增  先比较x==2  发现不等 然后自增  x就等于2   短路语句 遇fase则fase   后半句就不看了  ...

谢谢
作者: 梦想的小草    时间: 2016-8-27 22:12
因为&&具有短路的作用,x++ == 2已经为true,所以&&短路,后面的++y没有被执行到,因此y不变
作者: DaoDao2    时间: 2016-8-27 22:51
因为&&具有短路的作用,x++ == 2已经为false,所以&&短路,后面的++y没有被执行到,因此y不变




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