public class Inc{ 
  public static void main(String argv[]){ 
    int i = 0; 
    int j = i++; 
    System.out.println(i);
    System.out.println(j); 
  } 

结果是1和0
这个问题原先讨论过,而且还是SCSJ的一个考试题。
自己琢磨琢磨吧

解决方案 »

  1.   

    是不是可以这样理解:
    int j = i++;
    i = j;
      

  2.   

    i=i++;的意思就是说现将第二个i的值赋给第一个i,当时第二个i已经在寄存器中了,当执行++操作的时候,是将寄存器中的i做运算,并没有把内存中的i(第一个)做运算,所以要想做到你说的那种效果,要写成i=++i; 明白?希望能对你有帮助。
      

  3.   

    // 从这两个有趣的比较,再看看C++重载++的实现,我感觉Java的表现更为合理容易接受。
    //: C++ 重载 ++ 
    class Integer{
      long i;public:
      // prefix
      friend const Integer&
        operator++(Integer& a);
      // postfix
      friend const Integer
        operator++(Integer& a, int);
    }const Integer& operator++(Integer& a) {
      a.i++;
      return a;
    }const Integer operator++(Integer& a, int) {
      Integer before(a.i);
      a.i++;
      return before;
    }
      

  4.   

    哈哈!hyhong_h(黄黄)我和你想的一样,用++很容易出错,而且程序很不容易维护,最好不用,如果为了偷懒或者显示一下水平可以用用~不过小心吃苦头,不过大家是在这里研究一下,放你一马!
      

  5.   

    是JAVA和C的设计思想不同,在JAVA中用i++不就行了,为什么用i = i++; 
    这种问题老讨论,有意思么?
      

  6.   

    i++

    i=i++
    的区别???这个问题实在是很烦人,我一直没有搞清楚过。
      

  7.   

    其实i++跟i=i+1是一样的,
    再来一个i=i++不是累赘了吗?
    如果你要这样写,不如直接这样写:i=i+1
      

  8.   

    天啊,受不了了。TMD,越来越糊涂,谁能帮我彻底搞清楚,我给100分
      

  9.   

    在 javaunion.org 有此一贴,不妨看看
      

  10.   

    yes ,我TMD越看越糊涂。受不了了!!