我看到返回代码值的大部分地方都是这样完成的,
成功状态返回,#define SUCCESS 0和其他所有其他错误情况的无数字。
我的问题是,为什么我们为SUCCESS案件选择零?是否有任何特定的编程最佳实践问题?
/ R
答案 0 :(得分:4)
为了成功而返回0以及其他一些错误代码,这是一个古老的C习惯,所以你可以说:
int error = do_stuff();
if (error) {
handle_error(error);
}
但是,谓词通常以相反的方式工作,返回1表示“成功”(或true
来自<stdbool.h>
)。
答案 1 :(得分:3)
零通常意味着成功,因为零是唯一的计算结果为false的整数值。所有其他整数值的计算结果为true,它们适用于各种错误代码。
它可能看起来有点奇怪和逻辑上倒置,但因为成功只是成功而错误可能不同,所以经常选择上述惯例。
事实上,如果函数的返回值不仅用作成功/失败指示符,而且还用作错误代码,这是最合理的约定。如果存储了错误代码,例如在另一个输出参数中,那么返回1
表示成功,0
表示失败更有意义。
想象一下0
成功的条件是什么:
if (errcode = func()) {
/* error handling */
}
与更麻烦的相比:
if ((errcode = func()) != 1) {
/* error handling */
}
答案 2 :(得分:3)
您必须区分不同的错误,可能会有MaxInt - 1
个不同的错误。
如果0
出错并且1
成功,您如何区分所有错误?
答案 3 :(得分:2)
这是一个操作系统惯例。