我经常看到代码通过测试小于零而不是显式定义来检查来自POSIX函数的错误,并且通常只使用错误代码-1.那是
ret = function();
if (ret < 0) {
...
}
Run Code Online (Sandbox Code Playgroud)
VS
ret = function();
if (ret == -1) {
...
}
Run Code Online (Sandbox Code Playgroud)
第一次练习有什么目的吗?在某些体系结构上比0与-1比较的速度要快吗?如果现在定义的唯一错误代码是-1,C或POSIX标准是否可以保证第一个替代方案将来不会中断?如果没有,是否应该被视为不良做法?(我想大多数函数不太可能以这种方式改变,导致很多已编写的代码破坏?).
编辑:使问题更清楚:我只谈论专门返回-1的函数作为标准定义的错误代码.我知道有一些没有.我在很多地方看到了<0检查这些函数而不是== -1.因此问题.
首先让我举个例子:
我有一组间隔像
[1,4],[5,15],[16,20]
Run Code Online (Sandbox Code Playgroud)
而另一个喜欢
[2,3],[6,14]
Run Code Online (Sandbox Code Playgroud)
我希望它成为一组像
[1,2],[3,4],[5,6],[7,15],[16,20]
Run Code Online (Sandbox Code Playgroud)
我不确定这个操作是什么,如果标题有误导性,请忘记我.是否有我可以使用的CPAN模块,或者更好地提出我自己的解决方案?有一个众所周知的算法吗?