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说有有道理