请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师有个疑问 就是 int mid = l + (r - l) / 2 这样写为什么就不会整型溢出了呢?

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2018-10-30 11:03:35

如果l和r都在整型范畴里,mid在l,r之间,首先,这个结果是不会溢出的。


对于l + (r - l) / 2,计算过程中,r- l 使用减法,不会超出最大的整型范畴,同时, l + (r - l) / 2 中的这个加法,由于上面所说,结果不会整形溢出,这个加法也是安全的。


但是对于(l  + r) / 2,l + r是一个临时的计算结果,这个结果即使对于l和r都在整型范畴里,也可能溢出:)


自己使用极端值,试一试,体会一下?:)


加油!:)

2 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信