C 返回0或1表示成功

C 返回0或1表示成功,c,function,return-value,C,Function,Return Value,按照这个思路: 据说成功的标准返回码是0 我想知道在某些情况下,用另一种方式做是否更合乎逻辑 例如: 如果我想测试这样的3个条件: if (action1() && action2() && action3()) 在本例中,我认为使用返回代码“1”来获得成功更具可读性 检查故障状况也非常直观: if !(action1() && action2() && action3()) 但是,模块中的其他功能不需要这样的顺序评估。 这是

按照这个思路:

据说成功的标准返回码是0

我想知道在某些情况下,用另一种方式做是否更合乎逻辑

例如:

如果我想测试这样的3个条件:

if (action1() && action2() && action3())
在本例中,我认为使用返回代码“1”来获得成功更具可读性

检查故障状况也非常直观:

if !(action1() && action2() && action3())
但是,模块中的其他功能不需要这样的顺序评估。 这是在整个模块中使用“1”表示成功,使用“0”表示失败的一个好理由吗?
或者,有更好的替代方法吗?

“0”作为故障
您如何通知用户错误代码(导致故障的原因)?您的示例返回
1
表示“真”。。。不是为了“成功”。假设您想要一个打开文件的函数:(您可以返回
1
表示“true”,或者返回
0
表示成功,
1
表示未找到文件,
2
表示网络故障,
3
表示文件名中的坏字符,
4
表示拒绝访问。。。(只有
0
表示成功)@KamilCuk每个函数都会打印它产生的错误,没有比这个更高的层了。
strcmp()
如果字符串匹配,则返回
0
,这是学习者常见的陷阱。OTOH
isupper()
更直观。您可以使用宏,如
#define ACTION\u OK 0
使代码更可读,因此
(action1()==ACTION\u OK)
,或者使用
enum
定义各种结果。
“0”作为失败
您如何通知用户错误代码(关于导致失败的原因)?您的示例返回
1
表示“true”…而不是“success”。假设您想要一个打开文件的函数:(您可以返回
1
表示“true”或)返回
0
表示成功,
1
表示找不到文件,
2
表示网络故障,
3
表示文件名中的坏字符,
4
表示访问被拒绝,…(只有
0
表示成功)@KamilCuk每个函数都会打印它产生的错误,没有比这一个更高的层。
strcmp()
如果字符串匹配,则返回
0
,这是学习者的常见陷阱。OTOH
isupper()
更直观。您可以使用宏,如
#define ACTION\u OK 0
使代码更可读,因此
(action1()==ACTION\u OK)
,或者使用
enum
定义各种结果。