因此,在函数(Not main)中返回0意味着false并且返回1或除0以外的任何内容都意味着成功。
为什么我们在 main() 函数中放置0 ,这意味着当其他函数中的1意味着它运行成功时没有错误,谢谢。
0
和1
(或任何非零数)转换为布尔值false
,并true
在bool
发生转换的上下文中,例如在. 这在您的程序中使用。if(
here
) ...
from 的返回值main
以不同的方式使用,它返回到调用程序的 shell。在 shell 的上下文中,值的解释不同。在那里,0
传统上意味着“没有错误”,而大于零的值表示错误,并且该值本身包含一些关于发生哪种错误的提示。从以下代码段获取man grep
:
EXIT STATUS
The grep utility exits with one of the following values:
0 One or more lines were selected.
1 No lines were selected.
>1 An error occurred.
默认情况下,返回某个数字并不意味着什么。
开发人员决定方法返回什么以及返回值的含义。
main
返回一个退出代码并且没有错误0
,这很简单,并且有更多可能的返回值,只是和.0
1
哪个值代表失败,哪个代表成功,没有标准。但是,传统上,C/C++/Unix 选择使用 0 表示成功,非零表示失败,因为非零值可以作为错误代码来表示各种失败原因。
这样想:
按照传统,没有一个函数会返回一个表示成功的布尔值。相反,返回类型要么是某个错误号,要么是某个对象指针。
现在,如果返回错误码并且没有发生错误,自然不会返回错误。这就是main()
返回时归零的意思。因此,if(main())
意味着类似if(error)
.
同样,如果返回对象指针,并且发生错误,则不能返回任何对象,这再次由零(= 空指针)指示。所以,if(getObject())
意味着类似if(/*getObject() actually returned something*/)
.
所以,即使它看起来是错误的方式,它不是。只是没有任何东西直接返回成功布尔值。
返回值本身没有任何意义,开发人员决定该值是否意味着错误。
但是看看错误代码及其处理。
int MyFunctionWhichCanFail(...)
{
/*some code*/
return ERROR_CODE;
}
int FunctionWhichWorksWithFunctionWhichCanFail()
{
if (MyFunctionWhichCanFail(...))
{
//some error handling
}
//other stuff
}
在这种情况下,可能会出现许多不同的错误,因此错误代码是非常好的选择,以防万一出现失败/成功的结果,最好使用bool
。
我还想指出,在大多数系统中,零被定义为ERROR_SUCCESS
(或其他一些表示成功的关键字)。