关于i++内部的运算,一直没能搞得太明白,请专业人士帮忙.public class Test1 {
public static void main(String[] args) {
int x,a=6,b=7;
x=a++ + b++;
System.out.println(a);//这里的答案是7
System.out.println(b);//8
System.out.println("x="+x);//13
System.out.println(a);//7
System.out.println(b);//8
}
}为什么?
到底其底层是如何实现的呢?

解决方案 »

  1.   

     x=a++ + b++;
    可以这样翻译:
    x = a + b;
    a = a + 1;
    b = b + 1;
      

  2.   

    a++是先给出a的值(也就是a,然后执行+1)
    ++a就是反过来了
    你课一试试用++a换掉a++再比较下
      

  3.   

    http://blog.csdn.net/ZangXT/archive/2008/11/05/3229281.aspx
    看我的具体分析吧.
      

  4.   

    给你说一下吧,你要是用myeclispe6.0的话,你就去debug一下啦,用next step,一直下去的话,你就会发现它内部是如何运行的呀!知道了吗!
      

  5.   

    很老的问题了,程序是一步步往下走
    当 x=a++ + b++;执行完之后,a,b都就加1 了
    而x值是13 是因为 a和b运算完之后才加1
    如果是x=++a + ++b 的话 那么就是15了
      

  6.   

    如二楼所说:  主要是  a++  与 ++a 的区别!
    x= a++  <=>  x=a; 
                 a = a +1;x= ++a  <=>  a = a+1;
                 x= a;
      

  7.   

    a++ 是先把a 的值拿出来计算完了 再自己+1 ++a是先自己加1再去和别人计算
      

  8.   

    我想这和java中运算符的优先级有关系的
    这里有一个网址有java运算符优先级表。http://tech.sina.com.cn/s/2008-06-10/07452246517.shtml
      

  9.   

    请问Java中的++a 和 a++ ,有何区别.!
      

  10.   

    ++a称前缀式:会先执行计算,在生成值
    a++称后缀式:会先生成值,在执行计算原题: int x,a=6,b=7;
            x=a++ + b++;
    相当于:X=a++加上b++  (因为都是前缀试,所以先执行加法运算,所以x=13。然后在各自加1得到自己的值a=7.b=8)
       
      

  11.   

    晕了  晕了  晕了  晕了   上面我的写错了,重表达下++a称前缀式:操作数的值首先加1,然后才用于表达式中。
    a++称后缀式:原值先用于表达式中,然后才加1.原题: int x,a=6,b=7; 
            x=a++ + b++; 
    相当于:X=a++加上b++  (因为都是后缀试,所以原值先用于表达式中,所以X=6(a的原值)+7(b的原值)即等于13。然后在各自加1得到自己的值a=7.b=8)
      

  12.   

    public class Test1 {
        public static void main(String[] args) {
            int x,a=6,b=7;
            x=a++ + b++;
    //运行到这里时
    //而a++是先运算再++所以参与x赋值时他还是a=6
    //同理b=7
    //(++a 是先++再运算)
    a++执行过了所以a=6+1=7 b++执行过了所以b=7+1=8         System.out.println(a);//这里的答案是7
            System.out.println(b);//8
            System.out.println("x="+x);//13
            System.out.println(a);//7
            System.out.println(b);//8
        }
    }
    //不知道楼住需要是否是这样的解释?
      

  13.   

    a++是在进行运算之后,再将a加1.++a是先为a加1在进行其它运算!