请注意i++ 和++i的区别,比如:
int i=0;
int y;
y=i++;
那么这时的y是0,而i就是1了,
但是:
int i=0;
int y;
y=++i;
这是y和i都是1

解决方案 »

  1.   

    今天还真是奇怪了呢
    这么多人问这个问题这里是一个别人的答案,楼主看看吧:这涉及到运算的优先问题。
    i++的运算过程是先将i的值附给i++这个实体,然后在对i进行+1运算。
    这时的i=1,i++这个实体等于0。然后将i++的值附给i
    i就等于0了。另一个:关于这一点以前讨论过的。
    i = 0;
    i = i++;
    在java里面,执行后i=0; 在c里面,执行后i=1.
    这也算是java与c的实现方式上的一点不同之处吧。
    原因:
    java的实现方法:
    i = i++; 等价于: tmp = i; i = i + 1; i = tmp;
    c的实现方法:
    i = i++; 等价于: tmp = i; i = tmp;   i = i + 1;  
    差别在于:java先++, 然后给左边赋值, 而c先给左边赋值,再++
      

  2.   

    估计这个例子会有所帮助:class test 
    {
    public static void main(String[] args) 
    {
    int i = 0;
    int j;
                      j = i++;
    System.out.println(j);
    System.out.println(i);

    }
    }
      

  3.   

    我也曾想过自增的过程哪里去了
    不过看了我列出的第二个回答(如果那没错的话)
    就可以理解了
    i = i++; 等价于: tmp = i; i = i + 1; i = tmp;自增的过程其实是被 i = tmp 给覆盖掉了
    换个变量名可能好理解些:
    j = i++; 等价于: tmp = i; i = i + 1; j = tmp;究竟是不是这样,我不敢肯定
      

  4.   

    to gcq(gcq),
       为什么说无意义呢?
      

  5.   

    少白头兄,
            i=i++; 是先赋值,后自增呀,你的等价语句tmp = i; i = i + 1; i = tmp;
    顺序不对呀。
      

  6.   

    首先,我不是少白头 :(
    其次,那个答案不是我得出的,我只是认为它能解释i=0的现象而已
    我也说了,是否正确,我也不敢肯定你说的“i=i++; 是先赋值,后自增呀”能肯定么?
    依据何在?