返回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
程序立即终止执行, 退出状态设置为传递给return
或exit
的值
在内部函数(不是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
return
和exit
的背景下做同样的事情
问:为什么我们需要return
或return
?
答:表示执行状态。
在你的例子中,即使你没有return或exit语句,代码也可以正常运行(假设其他一切都是语法上的,等等也是正确的。另外,如果(并且应该是) main
返回int
你需要在结尾return 0
) 。
但是,在执行之后,您无法确定代码是否按预期工作。 您可以使用程序的返回代码(在* nix环境中,使用$?
),它为您提供代码(由exit
或return
设置)。 由于您自己设置这些代码,因此您可以了解代码在终止之前到达的位置。
您可以编写return 123
,其中123
表示执行后检查成功。
通常,在* nix环境中, 0
被视为成功,非零代码被视为失败。
指示执行状态。
状态0表示程序成功。
状态不同于0表示程序因错误或exception而退出。
返回 从您的主入口function将终止您的过程并向您的过程(执行您的过程的过程)报告您的过程的结果。 0表示成功。 其他代码通常表示失败及其含义。
函数返回返回执行返回调用程序并exit
函数终止程序。
在main
函数return 0
或exit(0)
是相同的但是如果你在不同的函数中写出exit(0)
,那么你的程序将退出该位置。
返回不同的值,如return 1
或return -1
表示程序返回错误。
当exit(0)
用于退出程序时,不会调用本地作用域的非静态对象的析构函数。 但是如果使用return 0,则会调用析构函数。