【问题标题】:Why is the returned value different?为什么返回值不同?
【发布时间】:2014-02-10 14:07:19
【问题描述】:

我用 C++ 编译了两个简单的程序,对每个程序进行了微小的更改,并使用查询 echo $? 输出 main 返回给操作系统的值。

方案一

    int main()
    {
          return 0 ; 
    }

方案 2

   int main()
   {
       return -1 ; 
   }

当我运行第一个程序并执行 echo $? 时,值是预期的 0,但是当我运行第二个程序并执行 echo $? 时,值是 255 而不是预期的 -1。
为什么会这样?
我正在使用 Ubuntu 12.04 LTS 以防万一

【问题讨论】:

标签: c++ return-value


【解决方案1】:

来自POSIX spec for exit()

status 的值可以是 0、EXIT_SUCCESS、EXIT_FAILURE 或任何其他值,但只有最低有效 8 位(即 status & 0377)可供等待的父进程使用。

并且根据 C 标准:

从初始调用主函数返回相当于以主函数返回的值作为参数调用退出函数;

【讨论】:

    【解决方案2】:

    Linux 只使用一个字节的返回值。在答案here 中有一个很好的解释,虽然有些冗长。选中未标记为答案的那一项。

    【讨论】:

      猜你喜欢
      • 2013-05-09
      • 2014-04-21
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多