例子:
void a()
{
exit();
}
void main()
{
while(1)
{
a();
}
}
這個程序並不會死循環,因為在a函數中調用exit,所以整個程序就結束了。但如果你在a函數中使用return,那麼就是個死循環了。
例子2:
#include <iostream.h>
using namespace std;
class bbb
{
public:
bbb();
~bbb();
};
bbb::bbb()
{
// do nothing
}
bbb::~bbb()
{
cout << "destruct" << endl;;
}
main()
{
bbb b;
//exit(0);
return 0;
}
然後把//exit(0)的註釋去掉再編譯運行一次。會有不同的結果。
答:當沒有exit(0)時,return 0時,系統會輸出並清理緩衝區並關閉標準輸入cin、標準輸出cout、標準錯誤cerr、標準日誌clog。
當有exit(0)時,c函數會輸出並清理stdin, stdout,現在stdout已經被關閉了,在執行return 0時,cout的緩衝區的數據已經沒有寫入的目標了,所以無輸出。
這只能說明cout和stdout, cin 和stdin用的是不同的緩衝區。
參考資料:
return與exit的區別是什麼?
return和exit的區別
沒有留言:
張貼留言