返回信息流我们知道,结束一个程序,可以使用return语句和exit()两种方式
那么,它们究竟有多少区别,哪个更好呢
这是一条镜像帖。来源:北邮人论坛 / cpp / #47074同步于 2010/11/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
用exit和return哪个更好
Thinker
2010/11/30镜像同步34 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
return只是返回
本身不是程序结束的意思
或者说int main里面return
相当于结束?
【 在 Thinker (思想者) 的大作中提到: 】
: 我们知道,结束一个程序,可以使用return语句和exit()两种方式
: 那么,它们究竟有多少区别,哪个更好呢
那main里面的return 0和exit(0)有啥区别
【 在 guozi (果子) 的大作中提到: 】
: return只是返回
: 本身不是程序结束的意思
: 或者说int main里面return
: ...................
main函数返回后操作系统会自动调用exit
exit是个库函数,进行资源的清理和释放,然后调用api,windows:ExitProcess(), Linux:_exit()
【 在 jokerlee 的大作中提到: 】
: 还有一点 exit函数是不返回的 也就是说调用exit退出main函数 会导致main函数中的局部对象没有析构
: --
: --- http://jackaldire.com
: ...................
exit()应该是有返回值的,不过返回值传递给操作系统或者说运行环境。
exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。
main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile ()创建的临时文件。
所以,在main()中调用到return或者exit应该都是效果一样的,但是效率应该是显式调用exit更高一点? PS:后面这句是我自己的推测。
return 可以给操作系统返回 exit status 么,我没试过
其实应该说是返回给父进程吧
【 在 JacKie575 (小五哥) 的大作中提到: 】
: exit()应该是有返回值的,不过返回值传递给操作系统或者说运行环境。
: exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。
: main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile ()创建的临时文件。
: ...................
【 在 coolfantasy 的大作中提到: 】
: return 可以给操作系统返回 exit status 么,我没试过
: 其实应该说是返回给父进程吧
: 【 在 JacKie575 (小五哥) 的大作中提到: 】
: ...................
#include <stdio.h>
int main()
{
printf("Hello\n");
return 0;
}
我指的是在main()中使用的return语句,应该是把返回值传递给程序的运行环境,我理解成操作系统,但是可能有点偏差。
你说得对,exit跟return语义是不同的,但是偶尔讨论些geek问题挺有意思的。。