当前位置: 首页 > 科技观察

C语言-当函数执行成功时,返回1还是返回0?

时间:2023-03-13 20:40:56 科技观察

今天分享的内容是关于函数执行成功,返回0还是1。基本上没有人会把大段大段的C语言代码都放到main()函数里面。更好的方法是遵循复用率高低耦合的原则,尽可能将代码拆分成不同的功能模块,封装成函数。C语言代码的组合是千变万化的,所以函数的功能可能会比较复杂,不同的输入往往会产生不同的输出结果。不同的输入往往会产生不同的输出结果。1、C语言函数的返回值C语言函数可以通过返回值来表达输出结果。比如log()函数的返回值,会根据不同的输入返回不同的值。再比如,如果我们定义了一个函数myopen()来打开某个文件,那么这个函数要么打开文件成功,要么打开文件失败。这时候可以通过返回值来区分“成功”和“失败”。当然,myopen()函数失败的原因可能有很多,但这不是本文的重点。这篇文章比较关心应该用什么值来表示“成功”,用什么值来表示“失败”。根据C语言语法,0表示假,非零(通常为1)表示真。该函数是否也使用返回值0表示“失败”,返回值1表示“成功”?2、“行业潜规则”C语言函数当然可以用返回值0表示“失败”,返回值1表示“成功”。事实上,C语言函数用什么返回值来表示成功或失败只是一个人为的约定,函数的调用者只需要遵守这个“约定”即可。C语言也有“行业潜规则”。但是,对于一般的函数,大多数C语言程序员往往使用返回值0表示成功,非零值表示失败。因此,如果我们想要自己定义的功能被大多数人愉快地使用,最好不要反其道而行之,最好遵守“行业潜规则”。仔细想想,C语言函数使用返回值0表示成功是有原因的。更一般的C语言函数的返回值并不一定只有两种可能的值(成功/失败),它也可能返回一个对应错误原因的返回值。总之,函数成功只有一种可能,而函数失败却有很多种可能。3、函数成功只有一种可能,但函数失败却有很多种可能。表示唯一的“成功”、多个非零返回值、多种原因的失败无疑更好。当然,我们也可以说“一个实数要么是1,要么不是1”,但这显然不是“行业潜规则”。比如我们可以规定myopen()函数如果因为“文件或目录不存在”而失败,则返回-1,如果因为“权限不够”而失败,则返回-2。-1和-2都是“非零值”,成功是失败的反义词,即“非零值”的反义词。可以理解myopen()函数使用返回值0表示成功。4、C语言程序员中也存在“行业潜规则”当然,C语言程序员中也存在“行业潜规则”。如果定义的函数是布尔函数,即使用bool关键字显式定义返回值,或者函数名类似于is_true(),那么此时显然应该遵循C语言语法,而“true”值用于指示成功。“false”值表示失败。1if(is_true())2printf("真\n");请看上面两行C语言代码。显然,遵循C语言语法的布尔函数更便于程序员编写布尔判断类代码。5、最后,本文主要讨论了C语言程序开发中函数返回值的问题。可见,用什么样的返回值表示成功,用什么样的返回值表示失败,其实只是一种人为的约定。但是,如果我们想要自己编写的代码被大多数同行愉快地使用,那么最好遵守“行业潜规则”。当然,如果我们希望我们的C语言代码的适用范围更广,我们可以使用标准头文件中预定义的EXIT_SUCCESS和EXIT_FAILURE宏。