黑马程序员技术交流社区

标题: 自学中,关于自增的在网上找的题目自己在做,搞不明白..... [打印本页]

作者: 野出岔子    时间: 2015-11-1 01:07
标题: 自学中,关于自增的在网上找的题目自己在做,搞不明白.....
本帖最后由 野出岔子 于 2015-11-1 01:08 编辑

下面程序执行的结果是?( D)
int x =1,y=1;
if(x++==2 & ++y==2){    x=7;
}
System.out.println("x="+x+"  , y="+y);
A.  x=1  y=2
B.  x=7 y=1
C.  x=7 y=2  
D.  x=2 y=2
问:
[size=14.6666669845581px]我打印了结果,为什么会是(x++==2)是false。而( ++y==2)是true?



作者: yanyubang    时间: 2015-11-1 09:21
++i是先计算,再操作
i++是先操作,再计算
(x++==2)是先用先做比较运算(1==2)输出false,然后x自增为2,
而(++y==2)是y先自增为2,然后做比较运算(2==2),输出为true.
作者: 再续啸傲    时间: 2015-11-1 09:53
get dao le......
作者: 米老鼠    时间: 2015-11-1 10:11
这个问题如果听了毕老师的视频  应该不难...他比喻得很形像,x++就是先出去玩儿再吃饭  也就是说先参与运算,再自增
++x是先吃饭再出去玩儿,也就是先自增,再参与运算
x++==2里面,x先做运算,也就是先和2比较大小,这个时侯x=1,x==2自然是false 比较之后x还要自增 所以自增后的x=2了...后面那个也一样    希望能够帮到你
作者: xiexie758    时间: 2015-11-1 10:17
理解为:结果都会自增,比较的是赋值运算是在自增后还是自增前
作者: 刘印    时间: 2015-11-1 10:23
米老鼠 发表于 2015-11-1 10:11
这个问题如果听了毕老师的视频  应该不难...他比喻得很形像,x  就是先出去玩儿再吃饭  也就是说先参与运算, ...

这个理解不错啊




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