精華區beta NTUWindBand 關於我們 聯絡資訊
※ 引述《tommy (下面的也是)》之銘言: : C語言中,有一個"endl"的指令 : 為什麼在某些程式尾有加,有些則無??????? : Why endl forces any accumulated outputs to be printed at that moment? : 上面是原文中的解釋~~~~~~~~~ : 可不可以把endl完整的用法告訴我呢~~~~~~~ : 在其他的書中,好像沒有用到endl(end line)的指令。 endl 是 C++ 裡面才有的東西,剛好我計程課是上 C++ 就 順便在這裡提供一點意見。 endl 通常是配合 cout 這類的東西用,功能就是印出一個 換行的字元,還有把 buffer flush 掉。 這裡,就要講到什麼是 buffer 。在電腦裡面, CPU 的運 算速度很快,而 I/O 的速度很慢,如果我們程式一邊執行 運算時,又要去處理 I/O , CPU 就會在那邊等 I/O 完成 後才能再去做其他的運算,如果三步五時都在做這種事, 整個系統就很沒有效率。於是就想出來,把我們要做的 I/O 先堆在一個 buffer 裡面,等到東西累積到 buffer 的大小 時,就可以只做一次 I/O ,這樣就比較 efficient 。 可是問題是,假如 buffer 的東西還沒滿,我們就想要強 迫它來做寫入呢?我們可以用 cout.flush() ,而 endl 裡面也偷偷做了 flush 的動作。 我想大概是這樣子吧,有錯誤再講。 -- ※ 發信站: 批踢踢實業坊(ptt.m8.ntu.edu.tw) ◆ From: Port5.TS1.neto.