澄清返回0和1

时间:2013-09-07 09:33:47

标签: c++ c return

因此,在函数(非主要)中返回 0 表示 false 并返回 1 或除<之外的任何内容strong> 0 表示成功

为什么在main()函数中我们放 0 ,这意味着当其他函数 1 表示成功运行时没有错误,谢谢。

5 个答案:

答案 0 :(得分:21)

在转换为0的上下文中,

1false(或任何非零数字)转换为布尔值truebool发生,例如在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 无错误,这是一种直接的方式,而且还有更多可能的返回值01

答案 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(或其他一些意味着成功的关键字)。