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

Lea*_*969 22 c return exit

例如,考虑以下代码

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和其他地方的大量信息.


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