黑马程序员技术交流社区
标题:
关于java中前++和后++的问题
[打印本页]
作者:
千殇轮回
时间:
2014-4-17 21:29
标题:
关于java中前++和后++的问题
本帖最后由 千殇轮回 于 2014-4-18 22:02 编辑
int x =1,y=1;
if(x++==2 & ++y==2)
{
x=7;
}
复制代码
讲讲x和y的执行变化,还有前++和后++的区别?
作者:
anqi
时间:
2014-4-17 21:35
本帖最后由 anqi 于 2014-4-17 21:43 编辑
很容易记 ++在前面是先再运算,++在后面是先运算在++
int x =1,y=1;
if(x++==2 & ++y==2) //相当于(x==2;x=+1)&(y=y+1;y=2)
{
x=7;
}
复制代码
作者:
曹冬明
时间:
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