java 中 
int i = 1;
i = i++;
此时 i 的值 是 1;c++中
int i = 1;
i = i++;
此时 i 的值 是 2
为什么啊?
我理解后增的执行过程是这样的:
后台先定义一临时变量 int temp = i;//temp = 1
然后 i++; // i =2
再返回 temp;// 1
最后 i = temp//1
可对c++解释不通
哪位高手帮解答一下,不盛感谢啊!

解决方案 »

  1.   

    i++就不是为了i = i++的应用. 何苦
      

  2.   

    在java中和在c++中是一样的
    i++ 你可以这样去理解,只要出现了 "i++" 那么这回这个“i”还是原来的值。但到下次在出现 “i” 的时候他就已经加上“1”了!
    与其区分的是 "++i" 只要出现了"++i" 那么不用等到下回出现"i"的时候,这回他已经就加上 1 了。
      

  3.   

    JAVA
    j=i++;
    temp=i;
    i=i+1;
    j=temp;C++
    j=i++;
    j=i;
    i=i+1;JAVA和C++是不一样的
    你可以照上面那么理解
      

  4.   

    C++编译器很多, 你用vc 和 gcc 编译出来的可能还不一样呢。
    这个问题关系到解析表达式是从左往右, 还是从右往左。 不同的编译器处理不一样, 反正你的代码不能依赖这个
      

  5.   

    查了一下
    LZ看看这个
    http://blog.csdn.net/haoel/archive/2003/04/04/2871.aspx
      

  6.   

    谢谢各位,尤其是JhunHoonXZ ,http://blog.csdn.net/haoel/archive/2003/04/04/2871.aspx分析的很好
    现在理解j = i++和j = ++i 在java和c++中都有下面的语句(1) temp = i;(2) temp++;(3) i = temp;另外还有一句 j = temp ;而前增和后增的差别就在这儿
    前增j = temp 位于(2)(3)之间
    后增j = temp 位于(1)(2)之间关于 i = i++;JhunHoonXZ推荐的文章说的挺明白的(但没看太懂)后面的一个评论挺不错的,没有什么意义