2008-11-10 24 views
14

在ACM ICPC墨西哥竞赛的最后一周,我错过了C++程序中的“return 0”。为此,我们受到了20分钟的处罚。返回0隐含

我已经读过,标准并没有要求我们在主函数的末尾编写它。这是隐含的,不是吗?我如何证明它?

我们使用带有G ++编译器的Fedora系统。

+0

您确定要将此标签为“C”以及“C++”吗?你的问题似乎只适用于C++。 FWIW,C99主要提供隐式返回0,早期的C标准没有。 – Chris 2008-11-10 06:32:19

+3

这让我想起了我在数学作业中获得9/10的时间,因为我没有在页面的右上角写下日期并且给它加下划线。 – 2008-11-10 12:48:45

+1

您是否错过`main`中的`return 0`或其他函数?它只在`main`中隐含。 – fredoverflow 2010-05-09 15:33:13

回答

26

你指的是C++标准,章3.6.1条第5款:

在主return语句有离开的主要功能 (破坏自动 存储时段的任何物体)的 效果调用 退出,返回值为 参数。如果控制到达终点的主要 没有遇到一回 声明,效果是 的是,执行return 0;

如果你还没有得到标准在手,就可以显示然后在工作草案段落。这里是C++ 98的一个,已经定义了这个。您可以了解更多here

0

您可以在Bjarne Stroustrup's book中向他们展示定义它的标准的位置:因为它是该语言的标准标准,因此无法进行辩论。不幸的是,我没有副本自己查看它。