Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回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; }_C_Return_Exit - Fatal编程技术网

返回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; }

返回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; },c,return,exit,C,Return,Exit,返回0,返回1,退出(0)在上述程序中做什么? exit(0)将退出整个程序,控制将退出循环,但如果return0,return1,return-1从main返回n相当于退出(n) 返回的有效值是程序的其余部分。它的含义取决于操作系统。在unix上,0表示正常终止,非零表示so形式的错误迫使您的程序在未达到预期目的的情况下终止 当您的示例似乎内存不足时,返回0(正常终止)是不寻常的。从主输入函数返回n将终止您的进程,并向父进程(执行进程的进程)报告进程的结果。0意味着成功。其他代码通常表示故障及

返回0
返回1
退出(0)
在上述程序中做什么?
exit(0)
将退出整个程序,控制将退出循环,但如果
return0
return1
return-1

main
返回n
相当于
退出(n)

返回的有效值是程序的其余部分。它的含义取决于操作系统。在unix上,0表示正常终止,非零表示so形式的错误迫使您的程序在未达到预期目的的情况下终止


当您的示例似乎内存不足时,返回0(正常终止)是不寻常的。从主输入函数返回n将终止您的进程,并向父进程(执行进程的进程)报告进程的结果。0意味着成功。其他代码通常表示故障及其含义。

返回函数中的
将执行返回给调用者,并从函数中退出
终止程序

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

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


当使用
exit(0)
退出程序时,不会调用局部作用域的非静态对象的析构函数。但是,如果使用返回0,则会调用析构函数。

return
from
main()
相当于
exit

程序立即终止执行,退出状态设置为传递给
return
exit

内部函数(非
main
)中的
return
将立即终止将给定结果返回给调用函数的特定函数的执行

从代码中的任何位置退出
将立即终止程序执行


状态0表示程序成功

状态不同于0表示程序由于错误或异常而退出

如果退出时的状态与0不同,则应该将错误消息打印到
stderr
,因此不要使用
printf
更好

if(errorOccurred) {
    fprintf(stderr, "meaningful message here\n");
    return -1;
}
请注意(取决于您所使用的操作系统),关于返回代码有一些约定

在谷歌上搜索“退出状态码”或类似的信息,你会在某某或其他地方找到大量信息


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

如前所述,在
main
的上下文中,返回
和退出
执行相同的操作

问:为什么我们需要
返回
退出

A:表示执行状态

在您的示例中,即使没有return或exit语句,代码也可以正常运行(假设其他所有语句在语法等方面都是正确的。此外,如果(并且应该是)
main
returns
int
您需要在结尾处使用
return 0

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

您可以写入
return123
,其中
123
表示执行后检查成功


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

表示执行状态

状态0表示程序成功

状态不同于0表示程序由于错误或异常而退出


返回n从您的主输入函数将终止您的进程,并向父进程(执行您的进程的进程)报告进程的结果。0意味着成功。其他代码通常表示失败及其含义。

您也必须看到这一点——首先,
退出(0)
从内存分配失败返回给人一种错误的舒适感,因为它几乎肯定是
退出(退出失败)
(毕竟,程序只是轰炸了一个内存分配).
exit
是一个标准的库函数,因此如果您使用它,您需要#include,如果您使用
return
这是不必要的,那么说“父进程”和“调用函数”是一样的吗?