为什么返回值不同?

时间:2014-01-21 06:03:24

标签: c++ return-value

我在c ++中编译了两个简单的程序,每个程序都进行了少量更改,并使用查询echo $?输出main返回给操作系统的值。

计划1

    int main()
    {
          return 0 ; 
    }

计划2

   int main()
   {
       return -1 ; 
   }

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

2 个答案:

答案 0 :(得分:4)

来自POSIX spec for exit()

  

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

按照C标准:

  

从初始调用到main函数的返回相当于调用exit函数,并将main函数返回的值作为其参数;

答案 1 :(得分:1)

Linux仅使用返回值的一个字节。在答案here中有一个非常好但有点冗长的解释。检查未标记为答案的那个。