C++中出错的时候返回的是-1,为什么?

来源:百度知道 编辑:UC知道 时间:2024/05/28 16:10:11
难道返回别的数字不可以吗?
我想,-1在内存中的保存方式是全1;那么是不是这样更容易用硬件来实现所以设计为返回-1?
异或是别的原因?
多谢高手指点!

这是一个约定俗成的东西,
一般来说,return 0表示成功,return 非零值表示失败
所以说,return 1 or return -1都是失败的意思,但你可以根据返回值判断错误原因。
举个例子,比如在winxp下
首先编译下面的程序:
int main( void )
{
return 0;
}
然后打开附件里的“命令提示符”,在命令行里运行刚才编译好的可执行文件,然后输入“echo %ERRORLEVEL%”,回车,就可以看到程序的返回值为 0 。假设刚才编译好的文件是 a.exe ,如果输入“a && dir”,则会列出当前目录下的文件夹和文件。但是如果改成“return -1”,或者别的非 0 值,重新编译后输入“a && dir”,则 dir 不会执行。因为 && 的含义是:如果 && 前面的程序正常退出,则继续执行 && 后面的程序,否则不执行。也就是说,操作系统利用程序的返回值,去判断程序是否成功运行。
在linux下也是一样的