C++中return,exit和_exit的区别

马谦马谦马谦 2018年5月21日10:47:08 发表评论
文章最后编辑于:2018-5-23 19:49:22

三者的区别:

  1. return作用于函数,使用return只是退出当前函数,而exit和_exit直接终止程序。
  2. return和exit在退出各自作用域前会自动刷新缓冲区,_exit不会刷新当前缓冲区。

例如以下代码的f函数中使用return,exit和_exit退出的结果都不一样。

linux环境中,程序默认遇到\n才刷新缓冲区,正常情况下上面的代码在打印完f1后不会直接打印f2f2要等到下一次\n才会一起刷新。

这里由于return会刷新缓冲区,所以程序的运行结果为:

如果把f中的reutrn换成_exit(),f2就不会打印出来了,结果只会输出f1,因为_exit不会刷新缓冲区并且马上退出,后面的f2来不及打印到屏幕上就退出了,而main则是完全没有机会运行到所以也不会打印。

而如果把return换成exit,那么f2会被输出,输出f2后直接终止程序,也不打印main

本文共执行40次查询,耗时0.319秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: