C++ - returning 0
C++ - returning 0
所以我对C++完全陌生,但对Java已经了解很多了。
我目前正在看Newoston的教程,他说如果你返回0,计算机就会知道程序成功运行。
我现在的问题是:这会影响功能吗?如果我想返回一个计算出的数字,但它出乎意料地为0,我是返回0还是函数不返回?
如果返回0,计算机就会知道程序运行成功。
这是特定于主要功能的。任何其他函数都可以返回它们想要的任何内容。Main的特殊之处在于它既是程序的入口点,也是程序的出口点。当程序启动时,只在main返回时才调用main。观察主函数的返回代码是我认为这是一种过时的做法,但当出现错误时,你仍然会看到很多代码返回-1之类的东西。谁在看那个错误代码?大多数时候都是操作系统。
返回零是一种惯例,尤其是在Unix世界中。如果一个程序(因此它的main()函数)返回零,则表示它成功完成。其他值可能(并非必要)意味着错误。有关常见返回代码的列表,请参见sysexits.h
。
此外,如果您错过了return语句,main()仍将(隐式)返回零(对C++有效)。它在C++标准3.6.1第5点中定义:
如果控件到达主控件的末尾而未遇到返回语句,效果是执行返回0;
在shell中,例如Bash,您可以通过查看$?
变量来检查从main()返回的值,例如:
$ g++ prog.cpp
$ ./a.out
$ echo $?
0
对于main()以外的函数,您应该记住,相比之下,零是一个布尔值false,因此返回零可能不会被视为成功(或true)。但是返回值可以是任何值,一般来说,它没有任何特殊意义,所以返回零是可以的。
在main
函数中返回0是唯一具有特殊意义的函数。一般来说,操作系统可以理解程序是成功的,就C++内部而言,这并不是特别有趣。
- ZLib GZIP Returning Z_BUF_ERROR(-5)
- C++:寻找"returning address of local variable..."的更正
- cin.fail() not returning true
- "Warning : No return statement in function returning non-void"是什么意思?
- std::localtime returning null
- 为什么我收到以下错误:"returning reference to temporary [-Werror=return-local-addr]"
- GetComboBoxInfo returning false
- Returning std::vector with std::move
- 如何修复空虚拟方法的"warning: no return statement in function returning non-void [-Wreturn-type]"
- Returning std::make_pair with std::forward
- GetThreadContext() returning 87
- 为什么不触发"returning reference to temporary object"编译器警告?
- MoveFileEx - returning GetLastError(): 17
- 为什么 decltype 在 "auto returning" 函数中是必需的?
- Self-returning class?
- Qt findChild returning 0
- SDL_LoadBMP only returning NULL
- C++11 lambda returning lambda
- cvLoadImage Returning NULL
- xrces item returning NULL