2012-01-18 64 views
-2

可有人应归结为我那是什么“回报”的功能到底为什么我们要在主函数返回0.eg年底写我们必须在函数“return”的末尾写什么?在C++

int main() 
{ 
    ..... 
    return 0; 
} 
+0

您请求从功能正确的东西吗?所以你需要有一个'return'。如果你不期望函数中的任何东西,只要将它声明为void main(){.... //不需要返回调用}' – 2012-01-18 19:37:17

+3

@ sh4nx0r:no,*这是无效*。 'main'必须有'int'返回类型。无论如何,'main'的特殊之处在于你并不需要从中返回任何东西。 – 2012-01-18 19:41:40

回答

6

必须在C++中使用main的末尾编写return;隐含返回值0。 (这在C中是不同的,你必须返回一个值。)

这样做是向程序的环境返回一个值,以便可以知道程序是成功(零)还是遇到了一些错误(非零)。其他程序,包括shell脚本/批处理文件可以使用这些信息来做出决定,例如,当他们运行的程序遇到错误时,他们可以提前停止。

0

所有支持函数调用的CPU都有一条类似于RET的指令,从被调用函数内部显式返回,返回到调用该函数的代码。函数调用后要返回的代码的内存地址已经保存在“知道的地方”(例如堆栈)中。 RET指令将检索该内存地址并将CPU指向正确的位置,以便在原始函数调用之后的代码处继续执行。在C++中,某些函数被声明为“返回”特定值(如上面的函数main),而其他函数从不返回任何值(声明为返回类型为void)。它是您选择如何声明您编写的函数的选择。如果函数返回类型为void,那么而不是需要在代码中显式返回语句,除非过早返回,例如从if,else或loop中返回。例如:

void foo(int x) { 
    if (x == 0) 
     return; // premature return to caller 

    int b = x*2; 
    // do some more stuff 
    // and now no need to say return, its done implicitly because we are at function end 
} 

然而,当你的函数声明为具有非void返回类型(例如INT),那么你应该有一个明确的return语句的功能,即使你是返回过早。

int bar(int y) {   
    return y*7; 
} 

,因为调用方期待它,可能的返回值分配给这样的变量:

int z = bar(4); 
相关问题