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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 野出岔子 于 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?


5 个回复

倒序浏览
++i是先计算,再操作
i++是先操作,再计算
(x++==2)是先用先做比较运算(1==2)输出false,然后x自增为2,
而(++y==2)是y先自增为2,然后做比较运算(2==2),输出为true.
回复 使用道具 举报
get dao le......
回复 使用道具 举报
这个问题如果听了毕老师的视频  应该不难...他比喻得很形像,x++就是先出去玩儿再吃饭  也就是说先参与运算,再自增
++x是先吃饭再出去玩儿,也就是先自增,再参与运算
x++==2里面,x先做运算,也就是先和2比较大小,这个时侯x=1,x==2自然是false 比较之后x还要自增 所以自增后的x=2了...后面那个也一样    希望能够帮到你
回复 使用道具 举报
理解为:结果都会自增,比较的是赋值运算是在自增后还是自增前
回复 使用道具 举报
刘印 来自手机 黑马帝 2015-11-1 10:23:47
地板
米老鼠 发表于 2015-11-1 10:11
这个问题如果听了毕老师的视频  应该不难...他比喻得很形像,x  就是先出去玩儿再吃饭  也就是说先参与运算, ...

这个理解不错啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马