C中main的返回值

C中main的返回值,c,C,1.在这种情况下,是谁被送回的?如果函数x()调用函数y()并且y()返回某个值,那么x()将获得该值。因此,在上述情况下,谁将捕获从main返回的1。main将其值返回给一些神奇的运行时启动库代码(您没有编写,并且通常看不到这些代码)。但是,根据您的操作系统,该值可能会影响到您的用户环境。例如,在Unix或Linux系统上,如果我有包含 int main() { return 1; } 如果我这样做了 int main() { return 5; } 我将看到“5”作为a.

1.在这种情况下,是谁被送回的?如果函数x()调用函数y()并且y()返回某个值,那么x()将获得该值。因此,在上述情况下,谁将捕获从main返回的1。

main
将其值返回给一些神奇的运行时启动库代码(您没有编写,并且通常看不到这些代码)。但是,根据您的操作系统,该值可能会影响到您的用户环境。例如,在Unix或Linux系统上,如果我有包含

int main()
{
    return 1;
}
如果我这样做了

int main()
{
    return 5;
}

我将看到“5”作为a.out的退出状态。

在某些操作系统和某些编译器上启动进程的人,main的返回值将被解释为进程退出代码。这与C标准afaik无关,只是有时做出的一个实现选择。它返回到操作系统,让它知道
main
已成功执行并退出。实际上,它告诉操作系统返回值为1。大多数人会将返回值0解释为成功,将任何其他值解释为错误。C最初是作为Unix的系统编程语言。在类Unix操作系统上,返回值转换为退出值,并传递给操作系统内核。然后内核将它提供给启动刚刚退出的进程的父进程。然后,父进程应该从内核收集exit值,以便1)了解运行是否成功(或者如果没有,那么它是如何失败的),2)让内核知道退出进程的进程id槽现在可以重用。其他系统可能会使用返回值执行自己的操作。
cc five.c
a.out
echo $?