0
i = i++
这句话,是先把0给了i,然后呢,i++了阿:(,为什么是0?

解决方案 »

  1.   

    public class Inc

      public static void main(String argv[])
      {                
        Inc inc = new Inc();                
        int i =0;                
        inc.fermin(i);    //这个地方不改变this.i的值,this.i=0
        i = i++;       //i=0(先取i的值,然后再加1),如果是i = ++i; i=1
        System.out.println(i);
      }
      void fermin(int i)
      {
        i++;
      }
    }
      

  2.   

    i=i++,是先i进行赋值,然后再进行I++,前后关联一下,I的值不变.
      

  3.   

    1。由于int是基本类型,i++时的i是参数(int i)的一个拷贝,不管怎样操做,最终对实参没有影响
      void fermin(int i)
      {                
        i++;       
      }
    2。i=i++ 由于i++是后++,执行此句时i = 0
      

  4.   

    1.传值。
    2.java编译器的原因,如果是c语言的话,i=i++的结果就是1;
      

  5.   

    结果是:0
    *1: inc.fermin(i);进行的值传递, 改变了 fermin(i)中的行参(局部变量),没有改变main()中局部变量i的值;*2:i=i++;在C++中结果应该是1,但在java中由运算符优先级和结合性决定,编译器的处理过程遇到i++,会新分配一个内存空间,保存i的原始值,而原i变量自增后.又用保存的i的原始值去重新赋值给变量i,覆盖了变量i自增的结果.为什么要这样的改变c++对自增的处理,纳闷....