C++中,return 0 和 return -1有什么区别,程序运行到该语句时会不会产生不同的结果?

如题所述

与C语言不同,C++的main函数返回类型既可以是void,也可以是int,但C++的设计者更主张程序员们用int作为main函数的返回类型,所以main执行完后应该返回一个整数告诉操作系统程序执行的情况。只要是一个整数就行,就像一般的函数一样,return表示函数结束,在main中return一个整数之后,main函数执行完毕,也即程序执行完毕。
在C++标准中虽然没有规定具体应该返回什么值,但一般而言返回0表示正常结束,返回非0表示异常结束,但一般非0时都返回-1,这也许跟C语言里的exit(-1)这个函数有关吧,毕竟很多C++程序员都是从C转过来的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-09
问得很好,我看很多人都觉得没有,你能提出这个问题说明了仔细思考。
return 0,相当于exit(0),相当于exit(EXIT_SUCCESS);
对于你的程序本身没有意义,但是对操作系统有意义。
在stdlib.h里面有定义:
原文:
--------------------------------------------------
/* We define these the same for all machines.
Changes from this to the outside world should be done in `_exit'. */
#define EXIT_FAILURE 1 /* Failing exit status. */
#define EXIT_SUCCESS 0 /* Successful exit status. */
--------------------------------------------------------
翻译,对于所有的机器,这些值都相同。0表示程序正确结束,1表示程序整形失败。
当然此外还有中止等异常情况,只有0表示正常。
如果你不写,对于32-bit的intel系统,返回EAX寄存器的值,这可能给操作系统一个错误的信号。
强烈推荐:写上。
依据标准,main的正确形式是:
int main(...);
int main(int argc, char*argv[]);
应当返回程序状态。这些都只有构造大型系统的时候才能看出是多么关键。
----------------------------------------------------------
应用举例:
对于一个编译器,如果编译生成了一个目标文件、可执行文件,会返回0,否则返回非0值。
当上层应用程序,如Make,NMake等,收到了非0值就不会继续编译。
从而使用户能够处理错误。
第2个回答  2013-09-27
一般应用在有多种不同结果的返回式上,
例如:return 1 表示成功,return 0 表示失败,return -1 表示异常
第3个回答  2013-09-27
没有上下文,不好说,return是返回的意思 一个是返回0,一个是返回-1,产生的结果,与具体成程有关
第4个回答  2013-09-27
具体要看你调用该函数的地方怎么用了,return只是向函数返回一个值,用作判断处理,理论上返回任何值都可以的。
相似回答