我在c ++中编译了两个简单的程序,每个程序都进行了少量更改,并使用查询echo $?
输出main返回给操作系统的值。
计划1
int main()
{
return 0 ;
}
计划2
int main()
{
return -1 ;
}
当我运行第一个程序并执行echo $?
时,该值与预期值0相同,但是当我运行第二个程序并执行echo $?
时,值为255而不是预期的-1。 />
为什么会这样呢?
我正在使用Ubuntu 12.04 LTS以防万一
答案 0 :(得分:4)
status的值可以是0,EXIT_SUCCESS,EXIT_FAILURE或任何其他值,但只有最低有效8位(即status& 0377)可供等待的父进程使用。
按照C标准:
从初始调用到main函数的返回相当于调用exit函数,并将main函数返回的值作为其参数;
答案 1 :(得分:1)
Linux仅使用返回值的一个字节。在答案here中有一个非常好但有点冗长的解释。检查未标记为答案的那个。