在C ++中返回-1不会返回任何错误?

时间:2014-12-08 06:23:30

标签: c++ mingw

下面的超级简单代码是否会产生错误?它应该生产什么吗?

int main()
{
    return -1;
}

我刚刚开始使用“C ++ Primer”#39;并且据说来自练习1.2:

  

返回值-1通常被视为程序失败的指示符。重新编译并重新运行程序,以查看系统如何处理来自main的故障指示器。

好像我的系统将故障指示器视为正常情况并且让我疯狂!

我可以返回任何数字,正面或负面,并且不会出现错误。只有当我输入一个类似'返回cisstupid的字符串时,'我(显然)会收到错误。一小时的谷歌搜索没有产生任何东西,我尝试使用-Wpedantic,-Wall,-Werror(即g ++ -Wpedantic -o test test.cpp)运行代码。系统是安装了mingw的Windows 8.1。

3 个答案:

答案 0 :(得分:1)

return关键字用于通过被调用的函数将一些值返回给调用函数这个返回值几乎可以解释返回值完全取决于调用函数如何处理返回值值。

int main()
{
    return -1;
}

这里你只是使用return返回一个负数,其解释可以在调用函数中处理(这里是Operatin。 这是一种惯例,而不是将此返回值视为程序操作错误的协议或规则,具体取决于调用系统返回值可能影响输出,即。正如CiaPan所说,经常总是之间存在很大差异。

简而言之,return -1的解释取决于调用系统。

答案 1 :(得分:0)

如果你在Windows上,是的,返回任何东西都是一如既往的事。我不确定其他系统,但我从来没有听说过在main中使用不同的返回值来表示用户发生了不好的事情。

返回值的实际用途正如您所知,以获取信息。 main的返回值以相同的方式使用。如果您在A.exe中并且调用B.exe,那么您可以使用main的返回值来指示B.exe是否成功运行。但是,您现在所处的位置,您永远不会这样做,因此您只需return 0

答案 2 :(得分:0)

程序可以完成错误。我不确定您使用的是哪种shell,但是使用bash shell,您可以键入echo $?以获取上次执行的程序的返回码。

要理解为什么会这样,请考虑这一点:大多数情况下,您不希望整个系统停止运行。但是,你确实想知道出了什么问题。因此,通常会调用某些东西,获取返回值,然后做出适当的反应,而不是让整个事情爆炸。