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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问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下的编程几乎都不再考虑返回值这个问题了。
参考技术A return 是退出函数模块并返回值给调用该函数的操作数,所以函数前要有返回类型,如果是用在main函数中的话,main函数返回值不能声明成void,那么此时的return与exit调用都是使程序结束并返回到操作系统。
exit后面跟个整形数(一般用的宏),通常用0,表示退出程序,然后跳到操作系统。他不受函数返回值限制
注:main函数是操作系统调用的追问

再请教一下:
我看书上有程序是写成:
void main()
……
if(……)
……
return;


主函数无返回值,是void型,那么这里这样写错了吗?但编译运行时都没错呀?还是应该用exit()呢?
谢谢!

追答

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

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

exit()函数结束程序,返回一个值给操作系统,告知程序的最后状态。在调用exit()函数之后,控制权会移交给操作系统。
在结束程序之前,exit()函数会调用之前使用atexit()注册过的所有函数,按照LIFO次序调用,关闭所有打开的文件,删除tmpfile()函数建立的所有临时文件
参考技术C #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;

把这个程序编译 运行 就知道区别在哪里了。

请问return与exit的区别?谢谢

return与exit的区别是什么?

exit()是一个函数
,结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,在父进程中wait系统调用将接受到此返回信息。

return返回函数值,是关键字

在main函数中我们通常使用return (0);这样的方式返回一个值。

但这是限定在非void情况下的也就是void main()这样的形式。

exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。

但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1)

exit(0); //正常退出
非0即是非正常退出
数字0,1,-1会被写入环境变量ERRORLEVEL,其它程序可以由此判断程序结束状态。
一般0为正常推出,其它数字为异常,其对应的错误可以自己指定。
参考技术A return只是用在函数体内,返回return后面那数的值给调用函数继续执行,
而exit是一个系统函数是直接可以结束整个程序的啊,他后面的参数是有固定含义的0,1之类的都是定义好的函数参数
参考技术B return 是在函数调用是返回一个值 或直接返回 然后结束函数调用
exit是直接结束主程序 exit(0)是正常结束 exit(1)是异常结束
参考技术C return主要是归还的意思,动词
exit主要是只出口,应急出口,多用名词
参考技术D exit()
是一个函数,结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,在父进程中wait系统调用将接受到此返回信息。

return返回函数值,是关键字

以上是关于请问C++中如果需要中途退出程序,exit(1)和exit(0)以及return有啥区别呢? 谢谢!的主要内容,如果未能解决你的问题,请参考以下文章

关于vb退出程序的问题

c++中exit(0)不能正常退出整个主程序

请问如何写一个C++的密码登陆代码,如果密码错误超过三次就自动退出,正确就运行接下来的程序...谢谢

在 Python 3 中,使用 Pytest,我们如何测试退出代码:python 程序的 exit(1) 和 exit(0)?

如何在 C++ 中注册线程退出处理程序?

在winForm中