int x=5;
  int m=0;
    x+=x+++(x++ +m);
  System.out.println(x);这个输出的结果是16 。 x+=x+++(x++ +m);
这个运算顺序是什么啊?每一步的运算结果是多少啊?谢谢了。

解决方案 »

  1.   

    首先, 我强烈反对楼主做这种有点SB的题目...x += x+++(x++ +m);首先, +++ 连在一起, 效果相当于++ +, 然后楼主应该了解后缀自增的特性, 是先使用,再自增.
    所以, 就相当于下面的式子了x += x++ + (x++ + m)
    也就相当于
    x = x + (x++ + (x++ + m);x = 5, m = 0
    也就是
    x = 5 + (5 + (6 + 0));
    第一个5不需要解释, 第二个5是因为x++, ++在后面所以先取出5, 再对x增1, 所以x现在等于6, 这也就是为什么后面第三个数是6, 这时候其实还要对x增1, 就是x = 7. 但最后又把16赋给了x, 所以x 的最终结果是16...
    是不是好啰嗦...
      

  2.   

    x = x + (x++ + (x++ + m));这个式子应该先算 (x++ +m)吧。那么这个结果就变成了
    x=7+(6+(5+0))阿。
      

  3.   

    x = x + (x++ + (x++ + m));这个式子应该先算 (x++ +m)吧。那么这个结果就变成了
    x=7+(6+(5+0))阿。应该是从左往右的顺序, 所以虽然(x++ + m) 有括号, 但还是x++ + (x++ + m) 从左往右...
      

  4.   

    x++ + (x++ + m) 从左往右...
      那么优先级别怎么体现出来。
      

  5.   

    可怜昨天去笔试,被宰了x=5
    m=0
    x+=x+++(x++ +m)
    x=x+(x++)+(x++ +m)
    x=5+5+(6+0)
    x=16++ 是一元用算符,优先级高于二元运算符