有你这样写的吗。那你对这个结构还是不了解。
value1=value1++是把value1的初值0送给自己。然后加1,但这个值并没有再传回去。

解决方案 »

  1.   

    value1=value1++运算先赋值再加1
      

  2.   

    很早以前就有这个问题的讨论了,可以去查一查因为他实际上是这样运算的
    int value1=0,value2=0;
    temp=value1;value1=value1+1; value1=temp; //value1=value1++;value2=value2+1;temp=value2; value2=temp;//value2=++value2;
    System.out.println(value1+"         "+value2);所以value1还是为0(因为取值过程在自加过程前已经完成了)
      

  3.   

    为什么用这么奇怪的写法?
    value1++;还有能达到要求吗?
      

  4.   

    GFox(小狐)的说法是正确的,楼顶的两位的说法是一种误导,或者说是没有说中关键点。
    关键是:(value++)是一个表达式,虽然它的结果是把value加一,但他的值是0。value=(value++)等于是value=0,所以value后来等于0。
      

  5.   

    “GFox(小狐)的说法是正确的,楼顶的两位的说法是一种误导,或者说是没有说中关键点。”
    这个我同意。
    但请教一下:(value++)是一个表达式,怎么知道它的值是0呢?
      

  6.   

    value++是这次的值不进行自加1,而是下一次自加;反过来 ++value 是这次就进行自加1;
     
      我们可以做个测试:
      
      for (int i=0;i<10;i++){
        System.out.println(i);
    }
     
    for (int i=0;i<10;++i){
        System.out.println(i);
    }
    比较一下两者的输出就知道了!