因此,在函数(非主要)中返回 0 表示 false 并返回 1 或除<之外的任何内容strong> 0 表示成功。
为什么在main()函数中我们放 0 ,这意味着当其他函数 1 表示成功运行时没有错误,谢谢。
答案 0 :(得分:21)
0
的上下文中, 1
和false
(或任何非零数字)转换为布尔值true
和bool
发生,例如在if(
here
) ...
中。这是在你的程序中使用。
main
的返回值以不同的方式使用,它返回给调用程序的shell。在shell的上下文中,值的解释不同。在那里,0
传统意味着&#34;没有错误&#34;大于零的值表示错误,值本身包含一些关于发生何种错误的提示。从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.
答案 1 :(得分:9)
默认情况下,返回某个数字并不意味着什么。
开发人员决定方法返回的内容以及返回值的含义。
main
返回退出代码,0
无错误,这是一种直接的方式,而且还有更多可能的返回值0
和1
。
答案 2 :(得分:1)
没有关于哪个值代表失败的标准,哪个代表成功。但是,传统上,C / C ++ / Unix选择使用0作为成功而非零作为失败,因为非零值可以用作错误代码来表示各种失败原因。
答案 3 :(得分:1)
这样想:
按照惯例,任何函数都不会返回表示成功的布尔值。相反,返回类型是一些错误号或一些对象指针。
现在,如果返回错误代码并且没有发生错误,则自然不会返回错误。当main()
返回时,这是零的含义。因此,if(main())
意味着if(error)
。
同样,如果返回一个对象指针,并且发生错误,则不能返回任何对象,该对象再次由零(=空指针)指示。因此,if(getObject())
意味着if(/*getObject() actually returned something*/)
。
所以,即使它看起来是错误的方式,但事实并非如此。只是没有任何东西直接返回成功布尔值。
答案 4 :(得分:0)
返回值本身并不意味着什么,开发人员决定该值是否意味着错误。
但请查看错误代码及其处理方法。
int MyFunctionWhichCanFail(...)
{
/*some code*/
return ERROR_CODE;
}
int FunctionWhichWorksWithFunctionWhichCanFail()
{
if (MyFunctionWhichCanFail(...))
{
//some error handling
}
//other stuff
}
在这种情况下,可能会出现许多不同的错误,因此错误代码是非常好的选择,如果可能导致结果失败/成功,最好使用bool
。
我还要注意,在大多数系统中,零被定义为ERROR_SUCCESS
(或其他一些意味着成功的关键字)。