例如,当我使用较旧的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/