运算符优先级经典题c+=c++;

来源:互联网 发布:nba历届全明星mvp数据 编辑:程序博客网 时间:2024/06/07 13:11

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);}}

此程序的运算结果为0;
要想理解这道题,一定首先要明白=的运算级别是最低的,还有就是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
我感觉上面的分解步骤,很好的把这道题给理解了,也对运算符的优先级运算理解的很清楚了!
0 0
原创粉丝点击