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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 千殇轮回 中级黑马   /  2014-4-17 21:29  /  1608 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 千殇轮回 于 2014-4-18 22:02 编辑
  1. int x =1,y=1;
  2. if(x++==2 & ++y==2)
  3. {
  4.         x=7;
  5. }
复制代码

讲讲x和y的执行变化,还有前++和后++的区别?

8 个回复

倒序浏览
本帖最后由 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. }
复制代码



回复 使用道具 举报
++y,是加后赋值,y++是先赋值后加!比如你的例子里x++==2满足,++y==2,就不满足了,所以x的值自将了一次,就是2,你可以System.out.println(x++)和System.out.println(++x);值是不一样的
回复 使用道具 举报
i++  ++i  一个先赋值在++  , 一个是先++在赋值
回复 使用道具 举报
++在前面就先计算++的结果在做==的判断。++在后面就先做==的判断,然后在做++的计算。
你这个代码就是x=1;y=1;  进入if循环,先判断x++==2;因为++在后面所以x还是1,为假,在计算x++,x=2,
然后看++y==2;因为++在前面,所以先计算,y=2.为真,但是if整体为假,所以循环里面的代码不执行。
最后x,y都=2.但是由于在判断的时候x=1,所以if的循环的代码是不执行的!
回复 使用道具 举报
1 x=y++;  y先赋值给b然后再加1(先玩后吃饭)。
  2 x=++y   y自加1然后再赋值。(先吃饭在玩)
回复 使用道具 举报
int x =1,y=1;

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

        x=7;

}
回复 使用道具 举报
执行以后x=2,y=1;if条件里面x++==2;先将x==2作比较显然是false,x自加因此x=2,&前面已经是false了就不会在执行++y==2这部分了因此y的值仍然是1。前++是先自加后进行其他的运算,后++先运算后自加
回复 使用道具 举报
楼上的哥们这里的是单&,不会短路(短路的是&&),所以后面的++y==2还是要执行的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马