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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 610757257 中级黑马   /  2014-12-28 21:16  /  942 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. int x = 1,y=1;

  2. if(x++==2 & ++y==2)
  3. {
  4.         x =7;
  5. }
  6. System.out.println("x="+x+",y="+y);
复制代码



为什么答案是:x=2,y=2  ???
求解答!!

9 个回复

倒序浏览
这道题牵扯到++,&运算符。++在前面,就是先+1再参与运算;++在后面,先参与运算,后再+1;但是运算结束之后,x的值都会+1,同理--。
举个例子,x=1,   y=x++,则y的值是1,x的值是2;
x=1,y=++x,则y的值是2,x的值也是2;
&运算,两边都为true时,才为真;
x++==2 & ++y==2,这个判断条件为false,所以没有执行if中的语句;但是x,y都要自增1
回复 使用道具 举报
这个问题就牵涉到了先++还是后加加的问题。我觉得这是个优先级别的问题a++==2 先把a提取出来,此时a还是初始的a=1,先进行==运算,再进行++运算,所以a++==2的结果是false,在==结束之后a再自增1,这个问题涉及到了内存的问题,我觉得还是记住答案比较好,先++就是先执行运算再++,后++就是先++再运算。
回复 使用道具 举报
本帖最后由 cz萑 于 2014-12-28 21:54 编辑

楼上的,你打错了,后++ 是先判断再加
回复 使用道具 举报
董晗 发表于 2014-12-28 21:46
这道题牵扯到++,&运算符。++在前面,就是先+1再参与运算;++在后面,先参与运算,后再+1;但是运算结束之 ...

最后一句什么意思? X Y 都自增了 条件判断为false 也懂,但是 XY 自增后 有赋值给XY么?
回复 使用道具 举报
yedaiwang 发表于 2014-12-28 22:03
最后一句什么意思? X Y 都自增了 条件判断为false 也懂,但是 XY 自增后 有赋值给XY么? ...

对啊,x=1,++x,x++,x的结果都是2,x+1然后赋值给x
回复 使用道具 举报
董晗 发表于 2014-12-28 22:49
对啊,x=1,++x,x++,x的结果都是2,x+1然后赋值给x

可是那是在if里面的运算赋值 也算么
回复 使用道具 举报
++和--如果单独出现的话,不用考虑执行顺序,例如说
     a++;
      a--;

但是如果++和--出现在表达式中,就需要考虑前后关系了。
如果++、--在数字的前方,则先对数字进行自加(减)操作,如果在数字后面,则是数字先以原值参与表达式运算,然后在表达式运算完毕后,再进行自加(减)操作
回复 使用道具 举报
董晗 中级黑马 2014-12-29 00:14:35
9#
yedaiwang 发表于 2014-12-28 22:52
可是那是在if里面的运算赋值 也算么

嗯。。。。
回复 使用道具 举报
这是一个单与,两边都要执行,x++是先比完在自增,++y是先自增在比,所以括号为假不执行,结果x=2,y=2!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马