请问C++中如果需要中途退出程序,exit(1)和exit(0)以及return有什么区别呢? 谢谢!

如题所述

对 LZ对never715的追问 的回复:

main函数声明为void类型没有问题,这种情况通常用于不需要操作系统关心程序的返回结果的情况下。此时,程序中使用exit(0)这样的代码,编译器通常会给出错误或警告,提示main函数是无返回值类型。

如果一个程序需要告诉操作系统它的执行结果是正常还是异常,那么main函数应该声明为int类型,同时在代码中任意位置都可以调用exit函数,参数为一个整数数值,如exit(0)或exit(1)等等,通常exit(0)表示程序正常结束,而其他值表示异常结束。但也不是那么绝对,主要还是要看程序的调用者如何理解并使用这个返回值。
main函数的返回值也可以用return来返回,当然仅限定在main函数体内使用,可以在main函数体内任意位置使用return 0、return 1这样,就如同函数内部一样。

如果LZ想详细了解程序返回值的相关知识和用途,建议了解一下UNIX系统的shell编程,DOS编程也可以,但资料可能会比较少。

现在WINDOWS系统的编程基本上都是图形化、窗口式编程,程序的返回值不再像UNIX SHELL和MSDOS中那么有用,所以WINDOWS下的编程几乎都不再考虑返回值这个问题了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-19
return 是退出函数模块并返回值给调用该函数的操作数,所以函数前要有返回类型,如果是用在main函数中的话,main函数返回值不能声明成void,那么此时的return与exit调用都是使程序结束并返回到操作系统。
exit后面跟个整形数(一般用的宏),通常用0,表示退出程序,然后跳到操作系统。他不受函数返回值限制
注:main函数是操作系统调用的追问

再请教一下:
我看书上有程序是写成:
void main()
{……
if(……)
{ ……
return;
}
}
主函数无返回值,是void型,那么这里这样写错了吗?但编译运行时都没错呀?还是应该用exit()呢?
谢谢!

追答

没有错!但是原则上最好不要这样写,此时的return后面没有接返回值编译器自动调节的!但是如果后面接了返回值编译就会报错!以后这种情况就用exit

本回答被提问者采纳
第2个回答  2011-06-19
abort()函数通过发出一个SIGABRT信号终止程序的执行。
abort()函数不会清空缓冲区,也没有调用之前用atexit()函数注册的清理函数。

exit()函数结束程序,返回一个值给操作系统,告知程序的最后状态。在调用exit()函数之后,控制权会移交给操作系统。
在结束程序之前,exit()函数会调用之前使用atexit()注册过的所有函数,按照LIFO次序调用,关闭所有打开的文件,删除tmpfile()函数建立的所有临时文件
第3个回答  2012-06-01
#include<stdio.h>
#include<stdlib.h>

int test_exit()
{
printf("do sth&& sub fun exit\n");
//exit(0);
//return 0;
//exit(4);
return (4);
}
int main()
{
int a;
a=test_exit();
printf("a=%d\n",a);
printf("main exit\n");
return 0;
}
把这个程序编译 运行 就知道区别在哪里了。

...exit(1)和exit(0)以及return有什么区别呢? 谢谢!
main函数声明为void类型没有问题,这种情况通常用于不需要操作系统关心程序的返回结果的情况下。此时,程序中使用exit(0)这样的代码,编译器通常会给出错误或警告,提示main函数是无返回值类型。如果一个程序需要告诉操作系统它的执行结果是正常还是异常,那么main函数应该声明为int类型,同时在代码中任意位置...

C++中如果需要中途退出程序,exit(1)和exit(0)以及return有什么区别呢...
exit(1)和_exit(0)函数都可以用于结束进程,不过_exit(1)调用之后会立即进入内核,而exit(0)函数会先执行一些清理之后才会进入内核,比如调用各种终止处理程序,关闭所有I\/O流.return 是退出函数模块并返回值给调用该函数的操作数,所以函数前要有返回类型,如果是用在main函数中的话,main函数返回值不...

c++ exit(1) 与 exit(0) 的区别是什么啊
exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。使用exit()时,可以不论main()的返回值类型。

C++ exit和return区别
return 2; \/\/ 如果不添加这句话的话,会编译出错, 因为Fun()函数要求返回int型变量, 上一行exit(3)并不是"函数的"返回值.}int main(){ int i = Fun(); \/\/ Fun()函数还没有执行完就退出程序了, 所以i不会被赋予任何值. return 0; \/\/ 程序根本就不会执行到这里来.} 以上是说...

C语言中exit(0)与exit(1)有什么区别??
1、exit(1)表示异常退出,在退出前可以给出一些提示信息,或在调试程序中察看出错原因。2、exit(0)表示正常退出。3、 return是语言级别的,是关键字,它表示了调用堆栈的返回,return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用,如果返回的是main函数,则为退出程序。而exit是系统...

C++ exit(1)问题
0表示程序正常结束,其他数值表示异常结束,通常为int类型,通常,6表示溢出等等。exit(int);为程序返回第一个参数的内容,并结束程序(而不是函数)。

c语言exit和return的区别
exit(1):非正常运行导致退出程序;return():返回函数,若在main主函数中,则会退出函数并返回一值,可以写为return(0),或return 0。详细说:1. return返回函数值,是关键字;exit是一个函数。2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的...

C++中,return 0 和 return -1有什么区别,程序运行到该语句时会不会产 ...
return表示函数结束,在main中return一个整数之后,main函数执行完毕,也即程序执行完毕。在C++标准中虽然没有规定具体应该返回什么值,但一般而言返回0表示正常结束,返回非0表示异常结束,但一般非0时都返回-1,这也许跟C语言里的exit(-1)这个函数有关吧,毕竟很多C++程序员都是从C转过来的。

在C++中exit()是什么意思啊?
exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程;而return是返回函数值并退出函数。通常情况:exit(0) 表示程序正常, exit(1) 和 exit(-1) 表示程序异常退出,exit(2) 表示表示系统找不到指定的文件。在整个程序中,只要调用 exit 就结束(当前进程或者在main时候为整个...

exit return 区别 c++
exit()是一个函数 ,结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,在父进程中wait系统调用将接受到此返回信息。return返回函数值,是关键字 在main函数中我们通常使用return (0);这样的方式返回一个值。但这是限定在非void情况下的也就是void main()这样的形式。exit()通常是...

相似回答