已有57人关注
复合赋值运算是怎么计算的?
发表在C#图书答疑 2017-04-21
是否精华
版块置顶:

比如说a+=a+=a+=a,如果a=10,则结果是80,这是怎么计算的呢?

分享到:
精彩评论 5
天天打豆豆_1492753905
学分:9 LV1
2017-04-21
沙发

求老师给解答

小禾斗
学分:7338 LV13
TA的每日心情
奋斗
2017-04-21 14:00:25
2017-04-21
板凳

读者朋友:

  您好,+=运算符的结合性是从右向左,因此这个表达式可以改成a+=(a+=(a+=a)),也就是先计算最后的a+=a,是20;现在a的值是20,计算中间的a+=a,是40;现在a的值是40,最后计算最前面的a+=a,得出80。


天天打豆豆_1492753905
学分:9 LV1
2017-04-21
地板

小禾斗 发表于2017-04-21 14:11

读者朋友:

  您好,+=运算符的结合性是从右向左,因此这个表达式可以改成a+=(a+=(a+=a)),也就是先计算最后的a+=a,是20;现在a的值是20,计算中间的a+=a,是40;现在a的值是40,最后计算最前面的a+=a,得出80。


老师,那如果是这样呢?a+=a*=a/=a-6

天天打豆豆_1492753905
学分:9 LV1
2017-04-21
4L

小禾斗 发表于2017-04-21 14:11

读者朋友:

  您好,+=运算符的结合性是从右向左,因此这个表达式可以改成a+=(a+=(a+=a)),也就是先计算最后的a+=a,是20;现在a的值是20,计算中间的a+=a,是40;现在a的值是40,最后计算最前面的a+=a,得出80。


老师,还在吗?

小禾斗
学分:7338 LV13
TA的每日心情
奋斗
2017-04-21 14:00:25
2017-04-21
5L

小禾斗 发表于2017-04-21 14:11

读者朋友:

  您好,+=运算符的结合性是从右向左,因此这个表达式可以改成a+=(a+=(a+=a)),也就是先计算最后的a+=a,是20;现在a的值是20,计算中间的a+=a,是40;现在a的值是40,最后计算最前面的a+=a,得出80。


这个表达式的最终结果应该是40,不是80,先执行(a+=a),结果是20,这个表达式的结果是20,但不是a的值变成了20,所以执行成(a+=(a+=a))的时候,结果是30,同理,这个30是这个表达式的结果是30,而不是a的值变成了30,最后再执行a+=(a+=(a+=a)),最终结果应该是40。
首页上一页 1 下一页尾页 5 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照