在简单的代码里 如果我用的是 a++,的话老是不能达到我预想的结果.但在次碰到++ 才会实现我想要的结果.
   这是为什么??

解决方案 »

  1.   

    int a = 1,b=1;
    System.out.println(a++);//结果是1
    System.out.println(++b);//结果是2
    楼主只要记着在前加是先给变量加1后在返回表达式的值即就是a的值,而后加时则正好相反。
      

  2.   

    ++a  ------------> a+=a;
    a--  ------------> a=a-1
      

  3.   

    b = a++;
    -----------
    mov eax, dword ptr [a]
    mov dword ptr [b], eax
    add eax, 1
    mov dword ptr [a], eax
    b = ++a;
    -----------
    mov eax, dword ptr [a]
    add eax, 1
    mov dword ptr [a] eax
    mov dword ptr [b] eax
    b += a;
    -----------
    mov eax, dword ptr [b]
    add eax, dword ptr [a]
    mov dword ptr [b], eax
      

  4.   

    我们把a++,++a这样的代码称为一个表达式,在java中表达式也是有值的。
    假设a=1:
    a++ 先返回表达式的值,在自增,即(a++)==1,a==2;
    ++a 先自增,再返回表达式的值,即(++a)==2,a==2;
      

  5.   


    import java.util.*;
    /**
     * @author troy(J2EE)
     * @version 1.0  1995年的3月23日
     */
    public class Test{
    public static void main(String[] args){
    int i=0;
    i=i++ + ++i ;
    System.out.println(i);
    i=0;
    i=i++ + ++i + i++;
    System.out.println(i);
      }
    }
      

  6.   

    输出
    ---------- java -- 运行 ----------
    2
    4输出完毕 (耗时 0 秒) - 正常终止
      

  7.   

    举个例子
    b=++a;//相当于a=a+1;b=a;
    b=a++;//相当于b=a;a=a+1;
      

  8.   

    谢谢  在位的好心人···。我想问一下  flex 将来会成为前提主流吗 ?