C ++:如何在main.cpp中返回负值

时间:2013-09-19 09:09:32

标签: c++ return-value negative-number

作为学校的作业,我们必须编写一个C ++程序,并在main中返回不同的错误代码。

问题是如果发生特定错误我们必须返回-2但我不知道如何返回负值。

例如:

int main()
{ 
    int a = -2; 
    return a;
}

在Windows中,这给了我一个返回值,如:42232684,在Linux中有:253

为什么不允许-2

我怎样才能获得-2

3 个答案:

答案 0 :(得分:9)

问题是,返回给操作系统的内容随后由操作系统外壳解释为IT喜欢它,而不是程序喜欢的。

main函数返回一个int,而return -2正是你的程序必须做的。

253是-2 in 2s补码到8位。

问题 - 这是C ++规范(int main())与shell使用它的方式不匹配。但它不依赖于该计划。

作业本身就是一个陷阱。

答案 1 :(得分:3)

来自C ++ 11标准18.5 / 8:

  

如果状态为零或EXIT_SUCCESS,则为   返回状态成功终止的实现定义形式。如果status为EXIT_FAILURE,则返回状态为不成功终止的实现定义形式。   否则返回的状态是实现定义的。

因此,它完全符合您对不同平台和/或编译器的不同结果。

答案 2 :(得分:2)

Unix和Linux仅限于8位返回码,-2是0xfe。当你echo $?

时,你的shell会理解为254

您需要提供0到255之间的返回码。

http://en.wikipedia.org/wiki/Exit_status

  兼容POSIX的退出状态限制为0-255,即   无符号8位整数的范围。