返回1,返回0和返回-1之间的区别并退出?

例如考虑以下代码

int main(int argc,char *argv[]) { int *p,*q; p = (int *)malloc(sizeof(int)*10); q = (int *)malloc(sizeof(int)*10); if (p == 0) { printf("ERROR: Out of memory\n"); return 1; } if (q == 0) { printf("ERROR: Out of memory\n"); exit(0); } return 0; } 

返回0,返回1,退出(0)在上面的程序中做什么.. exit(0)将退出总程序并且控件退出循环但是在返回0的情况下会发生什么,返回1,返回-1。

main() return等同于exit

程序立即终止执行, 退出状态设置为传递给returnexit的值

在内部函数(不是main )中返回将立即终止特定函数的执行,将给定结果返回给调用函数。

exit代码中的任何位置将立即终止程序执行。


状态0表示程序成功。

状态不同于0表示程序因错误或exception而退出。

如果你以不同于0的状态退出,你应该向stderr打印一条错误消息,所以不要使用printf更好的东西

 if(errorOccurred) { fprintf(stderr, "meaningful message here\n"); return -1; } 

请注意(取决于您所使用的操作系统),有一些关于返回代码的约定。

谷歌的“退出状态代码”或类似的,你会发现有关SO和其他地方的大量信息。


值得一提的是,如果您尝试执行某些无效操作(如读取无法访问的内存),操作系统本身可能会使用特定的退出状态代码终止您的程序。

从主入口函数return n将终止您的流程并向您的流程(执行流程的流程)报告流程的结果。 0表示成功。 其他代码通常表示失败及其含义。

main return n等于exit(n)

返回的有效内容是程序的其余部分。 它的含义取决于操作系统。 在unix上,0表示正常终止,非零表示错误forms强制程序终止而不满足其预期目的。

当你的例子看起来内存不足时,你的例子返回0(正常终止)是不寻常的。

正如这里所解释的那样,在main returnexit的背景下做同样的事情

问:为什么我们需要returnreturn

答:表示执行状态。

在你的例子中,即使你没有return或exit语句,代码也可以正常运行(假设其他一切都是语法上的,等等也是正确的。另外,如果(并且应该是) main返回int你需要在结尾return 0 ) 。

但是,在执行之后,您无法确定代码是否按预期工作。 您可以使用程序的返回代码(在* nix环境中,使用$? ),它为您提供代码(由exitreturn设置)。 由于您自己设置这些代码,因此您可以了解代码在终止之前到达的位置。

您可以编写return 123 ,其中123表示执行后检查成功。

通常,在* nix环境中, 0被视为成功,非零代码被视为失败。

指示执行状态。

状态0表示程序成功。

状态不同于0表示程序因错误或exception而退出。

返回 从您的主入口function将终止您的过程并向您的过程(执行您的过程的过程)报告您的过程的结果。 0表示成功。 其他代码通常表示失败及其含义。

函数返回返回执行返回调用程序并exit函数终止程序。

main函数return 0exit(0)是相同的但是如果你在不同的函数中写出exit(0) ,那么你的程序将退出该位置。

返回不同的值,如return 1return -1表示程序返回错误。

exit(0)用于退出程序时,不会调用本地作用域的非静态对象的析构函数。 但是如果使用return 0,则会调用析构函数。