Pra*_*eek 23 c++ standards program-entry-point return
ISO 1998 c ++标准规定,在main中没有显式使用return语句等同于使用return 0.但是,如果一个实现具有不同的标准"无错误"代码-1呢?
为什么不使用标准的宏EXIT_SUCCESS将要么被替换0或者-1还是取决于执行任何其他价值?
C++似乎强制程序的语义,这不是一种语言的角色,它应该只描述程序的行为方式.此外,"错误"返回值的情况不同:只有EXIT_FAILURE标准的"错误"终止标志,没有明确的值,例如"1".
这些选择的原因是什么?
Mic*_*urr 35
从零回归main()与你所要求的基本相同.返回零main()不必返回零到主机环境.
从C90/C99/C++ 98标准文件:
如果status的值为零
EXIT_SUCCESS,则返回状态成功终止的实现定义形式.
Bas*_*ard 18
实际上,return 0不一定会返回0!我在这里引用C标准,因为这是我最了解的.
关于return在main():
5.1.2.2.3程序终止
如果main函数的返回类型是兼容的类型
int,则从初始调用返回main函数等效于调用exit函数返回的main函数作为其参数;
关于exit():
7.20.4.3退出功能
概要Run Code Online (Sandbox Code Playgroud)#include <stdlib.h> void exit(int status);[...]
最后,控制权返回给主机环境.如果值status为零或EXIT_SUCCESS,则返回状态成功终止的实现定义形式.