作为学校的作业,我们必须编写一个 C++ 程序并在main
.
问题是如果发生特定错误,我们必须返回-2
,但我不知道如何返回负值。
例如:
int main()
{
int a = -2;
return a;
}
在 Windows 中,这给了我一个返回值,例如:42232684
而在 Linux 中,有:253
为什么-2
不允许?
我怎么能设法得到-2
?
作为学校的作业,我们必须编写一个 C++ 程序并在main
.
问题是如果发生特定错误,我们必须返回-2
,但我不知道如何返回负值。
例如:
int main()
{
int a = -2;
return a;
}
在 Windows 中,这给了我一个返回值,例如:42232684
而在 Linux 中,有:253
为什么-2
不允许?
我怎么能设法得到-2
?
问题是返回给操作系统的内容随后会由操作系统外壳按照 IT 的喜好进行解释,而不是按照您的程序的喜好进行解释。
主函数返回一个 int,return -2
这正是你的程序必须做的。
253 是 2 秒补码到 8 位的 -2。
问题 - 这里 - 是 C++ 规范 ( int main()
) 和 shell 使用它的方式之间的不匹配。但它不依赖于程序。
任务本身就是一个陷阱。
从 C++11 标准 18.5/8 开始:
如果状态为零或 EXIT_SUCCESS,则返回状态成功终止的实现定义形式。如果状态为 EXIT_FAILURE,则返回状态不成功终止的实现定义形式。否则返回的状态是实现定义的。
因此,对于不同的平台和/或编译器,您获得不同的结果是否完全符合要求。
Unix 和 linux 限制为 8 位返回码,-2 为 0xfe。你的 shell 会理解为 254 当你echo $?
您应该提供 0 到 255 之间的返回码。
http://en.wikipedia.org/wiki/Exit_status
在与 POSIX 兼容的退出状态上,值限制为 0-255,即无符号 8 位整数的范围。