例如,当我使用较旧的API(例如Unix上的C套接字API)时,我总是注意到,在比较错误的返回值时,人们更喜欢小于(<)而不是等于(==)。

int result = send(...);
if (result < 0) { perror("..."); }

在我所指的情况下,返回码只能是正数,0-1(将errno设置为正确的值)。那么,为什么不使用(result == -1)而不是(result < 0)检查错误呢?

我之所以问是因为我想知道这是否是出于习惯,还是使用小于号更有效?我在考虑以下事实:如果您比较两个uint64_t,并且发现了MSB中的差异,则不必检查其他7个字节,等等。不过,我可能会采用这种逻辑!

最佳答案

我认为这既不是出于习惯,也不是为了效率。这样比较安全,因为您不必依赖特定的返回码。而是,您使错误代码为负。例如,当第一个字符串小于第二个字符串时,strcmp函数返回“负值”。在大多数实现中,它将返回-1,但是处理它的正确方法是检查< 0

关于c++ - 小于或。等于效率C/C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7084741/

10-11 17:50