0

所以我对 C++ 完全陌生,但对 Java 已经了解很多。

我目前正在看 thenewboston 的教程,他说如果你返回 0,计算机就知道程序运行成功。

好吧,我现在的问题是:这会影响功能吗?如果我想返回一个计算出来的数字并且它是令人惊讶的 0,我是返回 0 还是函数什么都不返回?

4

3 回答 3

8

你返回 0 计算机知道程序运行成功。

这是特定于 main 函数的。任何其他函数都可以返回他们想要的任何东西。Main 的特殊之处在于它是程序的入口点,也是出口点。当您的程序启动时, main 仅在 main 返回时才结束。观察 main 函数的返回代码是我认为这些天已经过时的做法,但是当发生错误时,您仍然会看到很多代码返回诸如 -1 之类的东西。谁在看那个错误代码?操作系统大部分时间。

于 2013-07-07T21:29:10.357 回答
5

返回零是一种惯例,尤其是在 Unix 世界中。如果一个程序(所以它的 main() 函数)返回零,这意味着它成功完成。其他值可能(但不一定)意味着错误。您可以查看sysexits.h常见返回代码列表。

此外,如果您错过 return 语句,main() 仍将(隐式)返回零(对 C++ 有效)。它在C++ 标准3.6.1 第 5 点中定义:

如果控制在没有遇到return语句的情况下到达main的末尾,效果就是执行return 0;

在外壳中,例如。Bash,您可以通过查看$?变量来检查从 main() 返回的值,例如:

$ g++ prog.cpp
$ ./a.out
$ echo $?
0

对于 main() 以外的函数,您应该记住,相比之下,零是布尔值 false,因此返回零可能不会被解释为成功(或 true)。但是返回值可以是任何东西,一般来说没有任何特殊含义,所以返回零是可以的。

于 2013-07-07T21:31:32.143 回答
4

在函数中返回 0main是唯一具有任何特殊含义的函数。这通常是为了让操作系统可以理解程序是成功的,就 C++ 内部本身而言,它并不是特别有趣。

于 2013-07-07T21:30:14.253 回答