3

我读过的 C++ Primer 书说

从 main 返回的值以系统相关的方式访问。在 UNIX 和 Windows 系统上,在远处执行程序时,您必须发出适当的回显命令。在 UNIX 上,我们通过 echo $?

所以,如果程序是

int main ()
{
    return -88;
}

为什么不echo $?退货呢?(168印在上面echo

4

2 回答 2

4

确实如此。不过,它会将值转换为无符号的 8 位值,即 256 - 88 = 168。这是依赖于系统的习惯的一部分。

于 2012-08-17T17:52:09.133 回答
1

从返回值与使用该值main调用相同std::exit。这就是标准的后期草案所说的std::exit(18.5,status是您调用它的值):

最后,控制权返回到主机环境。如果status为零或,则返回成功终止EXIT_SUCCESS状态的实现定义形式 。如果是,则返回状态未成功终止的实现定义形式。否则返回的状态是实现定义的。statusEXIT_FAILURE

通常,该值要么按原样解释,要么转换为更小的(可能是无符号的)类型,但这实际上取决于您的环境和实现。

于 2012-08-17T17:55:13.457 回答