黑马程序员技术交流社区

标题: 小问题,求解答. [打印本页]

作者: 610757257    时间: 2014-12-28 21:16
标题: 小问题,求解答.
  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  ???
求解答!!
作者: 董晗    时间: 2014-12-28 21:46
这道题牵扯到++,&运算符。++在前面,就是先+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
作者: lnscore    时间: 2014-12-28 21:51
这个问题就牵涉到了先++还是后加加的问题。我觉得这是个优先级别的问题a++==2 先把a提取出来,此时a还是初始的a=1,先进行==运算,再进行++运算,所以a++==2的结果是false,在==结束之后a再自增1,这个问题涉及到了内存的问题,我觉得还是记住答案比较好,先++就是先执行运算再++,后++就是先++再运算。
作者: cz萑    时间: 2014-12-28 21:52
本帖最后由 cz萑 于 2014-12-28 21:54 编辑

楼上的,你打错了,后++ 是先判断再加
作者: yedaiwang    时间: 2014-12-28 22:03
董晗 发表于 2014-12-28 21:46
这道题牵扯到++,&运算符。++在前面,就是先+1再参与运算;++在后面,先参与运算,后再+1;但是运算结束之 ...

最后一句什么意思? X Y 都自增了 条件判断为false 也懂,但是 XY 自增后 有赋值给XY么?
作者: 董晗    时间: 2014-12-28 22:49
yedaiwang 发表于 2014-12-28 22:03
最后一句什么意思? X Y 都自增了 条件判断为false 也懂,但是 XY 自增后 有赋值给XY么? ...

对啊,x=1,++x,x++,x的结果都是2,x+1然后赋值给x
作者: yedaiwang    时间: 2014-12-28 22:52
董晗 发表于 2014-12-28 22:49
对啊,x=1,++x,x++,x的结果都是2,x+1然后赋值给x

可是那是在if里面的运算赋值 也算么
作者: 赵涛涛    时间: 2014-12-28 23:17
++和--如果单独出现的话,不用考虑执行顺序,例如说
     a++;
      a--;

但是如果++和--出现在表达式中,就需要考虑前后关系了。
如果++、--在数字的前方,则先对数字进行自加(减)操作,如果在数字后面,则是数字先以原值参与表达式运算,然后在表达式运算完毕后,再进行自加(减)操作

作者: 董晗    时间: 2014-12-29 00:14
yedaiwang 发表于 2014-12-28 22:52
可是那是在if里面的运算赋值 也算么

嗯。。。。
作者: x277402301t    时间: 2014-12-29 23:04
这是一个单与,两边都要执行,x++是先比完在自增,++y是先自增在比,所以括号为假不执行,结果x=2,y=2!




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