黑马程序员技术交流社区

标题: 关于java中前++和后++的问题 [打印本页]

作者: 千殇轮回    时间: 2014-4-17 21:29
标题: 关于java中前++和后++的问题
本帖最后由 千殇轮回 于 2014-4-18 22:02 编辑
  1. int x =1,y=1;
  2. if(x++==2 & ++y==2)
  3. {
  4.         x=7;
  5. }
复制代码

讲讲x和y的执行变化,还有前++和后++的区别?
作者: anqi    时间: 2014-4-17 21:35
本帖最后由 anqi 于 2014-4-17 21:43 编辑

很容易记 ++在前面是先再运算,++在后面是先运算在++
  1. int x =1,y=1;
  2. if(x++==2 & ++y==2) //相当于(x==2;x=+1)&(y=y+1;y=2)
  3. {
  4.         x=7;
  5. }
复制代码




作者: 曹冬明    时间: 2014-4-17 21:38
++y,是加后赋值,y++是先赋值后加!比如你的例子里x++==2满足,++y==2,就不满足了,所以x的值自将了一次,就是2,你可以System.out.println(x++)和System.out.println(++x);值是不一样的
作者: ノtrack    时间: 2014-4-17 21:40
i++  ++i  一个先赋值在++  , 一个是先++在赋值
作者: 你为谁归来    时间: 2014-4-17 21:44
++在前面就先计算++的结果在做==的判断。++在后面就先做==的判断,然后在做++的计算。
你这个代码就是x=1;y=1;  进入if循环,先判断x++==2;因为++在后面所以x还是1,为假,在计算x++,x=2,
然后看++y==2;因为++在前面,所以先计算,y=2.为真,但是if整体为假,所以循环里面的代码不执行。
最后x,y都=2.但是由于在判断的时候x=1,所以if的循环的代码是不执行的!
作者: sheng6699    时间: 2014-4-17 21:57
1 x=y++;  y先赋值给b然后再加1(先玩后吃饭)。
  2 x=++y   y自加1然后再赋值。(先吃饭在玩)
作者: 四川男人    时间: 2014-4-17 22:00
int x =1,y=1;

if(x++==2 & ++y==2)//++在右边,先赋值再自加;++在左边,先自加再赋值
                                    //所以相当于if(x==2 & 2==2)  这里&运算符是两边都要判断的,所以if条件不满足,
                                      //跳过if模块儿,x=2,y=2.
{

        x=7;

}

作者: 橡皮-leo    时间: 2014-4-17 22:07
执行以后x=2,y=1;if条件里面x++==2;先将x==2作比较显然是false,x自加因此x=2,&前面已经是false了就不会在执行++y==2这部分了因此y的值仍然是1。前++是先自加后进行其他的运算,后++先运算后自加
作者: 千殇轮回    时间: 2014-4-17 22:15
楼上的哥们这里的是单&,不会短路(短路的是&&),所以后面的++y==2还是要执行的




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