11

因此,在函数(Not main)中返回0意味着false并且返回1或除0以外的任何内容都意味着成功

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

4

5 回答 5

23

01(或任何非零数)转换为布尔值false,并truebool发生转换的上下文中,例如在. 这您的程序中使用。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.
于 2013-09-07T09:51:35.500 回答
9

默认情况下,返回某个数字并不意味着什么。

开发人员决定方法返回什么以及返回值的含义。

main返回一个退出代码并且没有错误0,这很简单,并且有更多可能的返回值,只是和.01

于 2013-09-07T09:35:00.283 回答
2

哪个值代表失败,哪个代表成功,没有标准。但是,传统上,C/C++/Unix 选择使用 0 表示成功,非零表示失败,因为非零值可以作为错误代码来表示各种失败原因。

于 2013-09-07T09:57:46.313 回答
2

这样想:

按照传统,没有一个函数会返回一个表示成功的布尔值。相反,返回类型要么是某个错误号,要么是某个对象指针。

现在,如果返回错误码并且没有发生错误,自然不会返回错误。这就是main()返回时归零的意思。因此,if(main())意味着类似if(error).

同样,如果返回对象指针,并且发生错误,则不能返回任何对象,这再次由零(= 空指针)指示。所以,if(getObject())意味着类似if(/*getObject() actually returned something*/).

所以,即使它看起来是错误的方式,它不是。只是没有任何东西直接返回成功布尔值。

于 2013-09-07T10:08:21.400 回答
0

返回值本身没有任何意义,开发人员决定该值是否意味着错误。

但是看看错误代码及其处理。

int MyFunctionWhichCanFail(...)
{
    /*some code*/
    return ERROR_CODE;
}

int FunctionWhichWorksWithFunctionWhichCanFail()
{
    if (MyFunctionWhichCanFail(...))
    {
        //some error handling
    }

    //other stuff
}

在这种情况下,可能会出现许多不同的错误,因此错误代码是非常好的选择,以防万一出现失败/成功的结果,最好使用bool

我还想指出,在大多数系统中,零被定义为ERROR_SUCCESS(或其他一些表示成功的关键字)。

于 2013-09-10T20:04:21.023 回答