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

三者的区别:

  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

发表评论