2016-07-28 99 views
2

在下面的程序中,存储的值为return 0,它实际上代表什么意思?int main()的返回值存储在哪里?

#include <iostream.h> 

int main() 
{ 
    cout<<"Hello World"; 
    return 0; 
} 
+0

取决于操作系统。 – 101010

+1

返回值通知宿主环境您的程序的成功状态。可以返回的唯一两个值是'EXIT_SUCCESS'或'EXIT_FAILURE';前者与返回'0'具有相同的效果。不同的平台可以支持更多种状态值(例如,Posix允许8位值状态)。 –

回答

2

main()返回值是通常的过程(例如,如果它是从命令行调用)的返回值。其确切的存储位置和传输机制返回到调用shell(或父进程)是由定位的平台定义的。

0EXIT_SUCCESS)的返回通常意味着程序无错完成。非零值反过来表示错误 - 您的程序将定义每个值的确切含义。

+0

不需要有“呼叫外壳”。实际上,典型操作系统上的大多数进程可能永远不会由“shell”创建。 –

+0

@KerrekSB。正确,这是针对某些情况并作为例子。 – Niall

1

使用main的返回值作为过程的退出状态。

wikipedia描述什么退出状态表示:

退出状态或返回在计算机编程过程的代码是从一个子进程(或被叫方)通过少数的父进程(或调用者)完成执行特定过程或委托任务时。

因此,您可能会说返回值存储在父进程的内存中。


中的值的标准的宏EXIT_SUCCESS(由报头<cstdlib>定义)表示该过程是成功的,而EXIT_FAILURE值表示失败。

在POSIX系统(以及我用过的其他系统)上,0表示成功,而非0表示失败。

0

这不是真的由语言定义。最常见的是,它存储在x86架构的EAX寄存器中。控制流程返回到调用main()的过程,它可以随心所欲地执行任何操作。

我看到的最常见含义是正常执行(成功)为零,一个用于泛型错误,但每个值都可能意味着程序特有的某些内容。我从来没有建立过一个程序,通过main从int中返回任何有意义的东西,但是假设你创建了一个添加两个数字的程序,那么return的含义就是两个数字的总和,把main看作是一个函数,你的程序从哪个开始。