请教一个合理的解释

package com.loser.pages;

public class Test1 {

public static void main(String arg[]) {
    int s = 0;
    for (int i = 0; i < 100; i++) {
        s += s++;
        System.out.println("s=" + s );
    }

}

}



帮忙解释一下输出结果。。。。。

这个问题有兴趣的话可以参考一下[url=http://rednaxelafx.iteye.com/blog/132187]关于带副作用的表达式的一点笔记[/url]……咳咳,这种代码实在不可取,有兴趣研究下就算了。

s += s++;
主要是这句
可以分为:
s += s;
s++;

再分一下的话就是
s = s + s;
s++;

s += s++;死循环了.

s += s++;
可以理解为:
s = s+(s++);

这样,开始循环的时候int s = 0; 这个时候s=0已经在内存中了。
那么s++也等0(s++结束后s=1),但是s = [color=red][b]s[/b][/color] + (s++) 中的那个红色S取得是内存中s值,还是0,而不是s++后的s=1的值。
这样结果s还是为0,而内存中的s也还是0 ,不管循环多少次最后结果都是0

FengShen_Xia说有有道理