【发布时间】:2012-04-06 17:14:14
【问题描述】:
显然,在二分搜索实现中:
mid = (low + high)/2
可能导致溢出。我已经阅读了很多文档(例如this),以下内容可以防止该问题:
mid = (low + high) >>> 1
但是,我没有看到这样做的原因。任何人都可以对此有所了解吗?
【问题讨论】:
-
C 中没有“逻辑右移”之类的东西(没有
>>>运算符)。 -
谢谢各位,帮了大忙。我确实在那里看到了 C 等效代码,但我的问题更多是关于为什么它会起作用。但是,您的所有回答都帮助我消除了疑虑。
-
使用正确的类型。这就是
size_t的发明目的。