首页 > 解决方案 > nel -= nel/2 在功能上是否等同于 nel /= 2?

问题描述

我最近在bsearchmusl 的实现中遇到了这段代码:

else if (sign < 0)
    nel /= 2;
else {
    base = try;
    nel -= nel/2;
}

nel是一个size_t

功能nel -= nel/2上等同于?nel /= 2

标签: cdivisionsubtractionsize-t

解决方案


你已经正确地自我回答了,但对于这段代码,特别是,之后

base = try;

第一nel/2项已被删除,不再考虑。如果你只是nel /= 2在这一点上做了,而且nel很奇怪,你也会从进一步的考虑中删除最后一项,可能会产生假阴性。

请注意,您正在查看的代码最近已更改为始终切断在不相等情况下进行比较的项目。


推荐阅读