x = x + (x++) + (++x) 计算顺序,运算符+号前后的算式得到的x的值会相互影响么java++

解决方案 »

  1.   

    debug一下就可以看到了。
    把代码写成这样,然后打个断点,运行一行看一下X的值就可以看到了。
    x = x 
        + (x++) 
        + (++x);
      

  2.   

    它其实是这样的,例如  int x = 2 ; 那么 x = x + (x++) + (++x) 就等于 x = 2 + 2 + 4 ;
    因为先运算左括号里的再运算右括号的,而左括号的(x++)会先把x = 2用于运算,再将x+1变为3来存储
    x,此时x=3便参与右括号(++x)的计算,而这样是先++之后的到x=4再存储来运算。你要记得
    x++是用x来计算或者做其他的输出之类的然后才会++再存储用以下面的,而++x就刚好相反,其
    是先++给x加1之后存储再进行当前的计算,只要记得“后++用以后面,前++用以前面”就不会出错了
      

  3.   

    其实这取决编译器,真的,你在cl下编译的结果和gun gcc下的编译的结果是不一样的。
    如果这是java,那我只能说 IBM的JDK与SUN的JDK可能也不一样。
      

  4.   

    x = x + (x++) + (++x)
    结果过应该是
    3x+1吧。
    其实你不用管内部怎么计算的,只要知道
    x++是返回x
    ++x是返回x+1就可以了。
      

  5.   

    错了
    应该是
    x+    x  +   (x+1)+1=3x+2
      

  6.   

    五楼正解,i++就是语句执行完毕以后补做一个i=i+1的赋值,++i就是在语句执行之前执行一个i=i+1语句。
    可参考链接http://zhidao.baidu.com/question/35522236.html
      

  7.   

    6楼正解,结果3x+2.
    x++和++x参与运算时分别为x和x+1,参与运算后x值都变为x+1
      

  8.   

    i++ 是执行运算后 i的值加1 ;++i是先执行加1在做运算
      

  9.   

    在类C语言的程序语言中,C/C++, java, javascript, C# 得到的结果都可能不同。楼主的这种写法增加了程序出现错误的风险,增加了维护成本和难度,有百害而无一利可能大学里的老师喜欢在考试的时候出这种题,但是这种写法除了拿来show一下之外,没有什么实际意义。
      

  10.   

    感觉上和编译器以及优化方式有关,以前试过i=i++;
    visual studio 2010和eclipse结果就不一样
      

  11.   

    x = x + (x++) + (++x) 
    在C中语义是未定义的,随着编译器的不同可以有不同的结果;
    在Java中有明确的定义。这是介绍语义与语法区别和计算顺序的一个好例子,实践中避免使用。