此程序的运算结果为0;public class TestClass1 { public static void main(String[] args) { int c=0; for(int i=1;i<=100;i++){ c+=c++; } System.out.println(c); } }
要想理解这道题,
一定首先要明白=的运算级别是最低的,还有就是c++是先使用c后执行++操作!
那么首先将c+=c++展开来:
c=c+c++;这时候就是看运算优先级的关系了,我感觉这时候定义一个缓冲区能够很好的理解这道题;首先定义一个 int buf;
那么原式可以分解为:
buf=c;//buf=0;
c=c+1;//上面两句等价于buf=c++;执行后结果 buf=0;c=1;
c=buf+buf;//然后把buf相加重新赋值给c,所以c=0
我感觉上面的分解步骤,很好的把这道题给理解了,也对运算符的优先级运算理解的很清楚了!