例如,考虑以下代码
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;
}
Run Code Online (Sandbox Code Playgroud)
什么返回0,返回1,退出(0)在上面的程序中执行.. exit(0)将退出总程序并且控件退出循环但是在返回0的情况下会发生什么,返回1,返回-1.
Pao*_*olo 27
return来自main()相当于exit
程序立即终止执行,退出状态设置为传递给return或的值exit
return在内部函数(非main)中将立即终止特定函数的执行,将给定结果返回给调用函数.
exit 从您的代码的任何位置将立即终止程序执行.
状态0表示程序成功.
状态不同于0表示程序因错误或异常而退出.
如果你以不同于0的状态退出,那么你应该打印一条错误信息,stderr而不是使用printf更好的东西
if(errorOccurred) {
fprintf(stderr, "meaningful message here\n");
return -1;
}
Run Code Online (Sandbox Code Playgroud)
请注意(取决于您所使用的操作系统),有一些关于返回代码的约定.
谷歌的"退出状态代码"或类似的,你会发现有关SO和其他地方的大量信息.
值得一提的是,如果您尝试执行某些无效操作(例如读取您无法访问的内存),操作系统本身可能会使用特定的退出状态代码终止您的程序.