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

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值