-2
A
回答
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);
相关问题
- 1. 为什么我们需要在C函数的末尾使用'return 0'?
- 2. 为什么我必须在git日志的末尾打到q
- 3. 为什么我们必须在react-native的promise链末尾调用`.done()`?
- 4. 为什么显示UIAlertView必须在线程的末尾
- 5. Python C API:我们什么时候在Python指令的末尾?
- 6. 为什么我必须在子查询末尾加上“AS”子句。
- 7. 为什么我们应该在button_press_event.handler的末尾返回True?
- 8. 为什么我们必须综合?
- 9. 为什么我必须重新声明C++派生类中的重写函数?
- 10. 为什么我得到的错误“参数包'F'必须在模板参数列表末尾”
- 11. 为什么我必须使用“本”在函数的
- 12. 什么是PostgreSQL函数,什么时候我必须使用它们?
- 13. 为什么我们必须写头缓存控制?
- 14. 如果我在PHP的函数末尾没有包含“return”,会发生什么情况?
- 15. 我们必须在Android的Twitter Api中的回调URL中编写什么?
- 16. 为什么我必须玩“rsp”才能调用C++函数?
- 17. 为什么必须在函数中包含C++代码?
- 18. 为什么在此函数定义的末尾添加了const?
- 19. 为什么我必须在setTimeout中包装函数?
- 20. 在异步函数中,为什么我必须等待?
- 21. 为什么我必须在函数中附上jQuery命令
- 22. 为什么我明确地必须在这里声明函数?
- 23. ASP.NET MVC 2 - 做UrlParameter.Optional条目必须在路由的末尾?
- 24. 写在xml的末尾
- 25. 我怎么在URL的末尾添加JSON传递给函数
- 26. 我如何写文件在文件末尾的文件在c + +
- 27. 为什么我们必须在网站应用程序中写入robots.txt?
- 28. 为什么必须N-1在C
- 29. SWIFT:为什么我们必须将惊叹号放在:str.characters.index(of:“”)!
- 30. 为什么我们必须在Oracle PL/SQL中嵌套块?
您请求从功能正确的东西吗?所以你需要有一个'return'。如果你不期望函数中的任何东西,只要将它声明为void main(){.... //不需要返回调用}' – 2012-01-18 19:37:17
@ sh4nx0r:no,*这是无效*。 'main'必须有'int'返回类型。无论如何,'main'的特殊之处在于你并不需要从中返回任何东西。 – 2012-01-18 19:41:40