C++ 正在澄清返回0和1

C++ 正在澄清返回0和1,c++,c,return,C++,C,Return,因此,在函数(非main)中返回0意味着错误,返回1或0以外的任何内容都意味着成功 为什么我们在main()函数中放入0,这意味着当其他函数中的1表示它成功运行时没有错误,谢谢。默认情况下返回某个数字并不意味着什么 开发人员决定方法返回的内容以及返回值的含义 main返回退出代码,0表示无错误,这是一种直截了当的方式,并且有更多可能的返回值,仅0和10和1(或任何非零数字)在发生到bool转换的上下文中转换为布尔值false和true,例如在if(此处)…中。这在您的程序中使用 来自main的返

因此,在函数(非main)中返回0意味着错误,返回10以外的任何内容都意味着成功


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

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

开发人员决定方法返回的内容以及返回值的含义


main
返回退出代码,
0
表示无错误,这是一种直截了当的方式,并且有更多可能的返回值,仅
0
1

0
1
(或任何非零数字)在发生到
bool
转换的上下文中转换为布尔值
false
true
,例如在
if(
此处
)…
中。这在您的程序中使用

来自
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.

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

这样想:

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

现在,如果返回一个错误代码并且没有发生错误,那么自然不会返回错误。这是
main()
返回时零的含义。因此,
if(main())
的意思类似于
if(error)

同样,如果返回一个对象指针,并且发生错误,则不能返回任何对象,这同样由零(=空指针)表示。因此,
if(getObject())
的意思类似于
if(/*getObject()实际返回了一些*/)


因此,尽管它看起来方向不对,但事实并非如此。只是没有任何东西会直接返回一个成功的布尔值。

返回的值本身意味着什么,开发人员决定该值是否意味着错误

但请看一下错误代码及其处理

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

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

    //other stuff
}
在这种情况下,可能会发生许多不同的错误,因此错误代码是一个很好的选择,在可能出现结果失败/成功的情况下,最好使用
bool


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

您似乎混淆了“SUCCESS Boolean”和“ERROR code”的概念。一些函数在成功时返回
true
,在失败时返回
false
(有时还额外设置一个全局变量,如
errno
,作为某个错误号);其他(如
main
)返回错误代码,
0
表示“无”(即“无错误”,即“成功”)和对应于各种错误的非零数字。返回0表示false,返回1表示true的前提是。。。误入歧途剩下的问题在这之后没有多大意义。这澄清了我要问的另外一些问题,谢谢。你可以考虑使用Excel(ExtIX成功)和Excel(ExtIX失败)来避免解释中的并发症,至少从你的观点来看。正如@DanielFrey所说的,这实际上取决于接收应用程序退出代码的工具,但您对此无能为力。