今天,我總算搞清楚“回車”(carriage
return)和“換行”(line feed)這兩個(gè)概念的來歷和區(qū)別了。
在計(jì)算機(jī)還沒有出現(xiàn)之前,有一種叫做電傳打字機(jī)(Teletype Model
33)的玩意,每秒鐘可以打10個(gè)字符。但是它有一個(gè)問題,就是打完一行換行的時(shí)候,要用去0.2秒,正好可以打兩個(gè)字符。要是在這0.2秒里面,又有新的字符傳過來,那么這個(gè)字符將丟失。
于是,研制人員想了個(gè)辦法解決這個(gè)問題,就是在每行后面加兩個(gè)表示結(jié)束的字符。一個(gè)叫做“回車”,告訴打字機(jī)把打印頭定位在左邊界;另一個(gè)叫做“換行”,告訴打字機(jī)把紙向下移一行。
這就是“換行”和“回車”的來歷,從它們的英語(yǔ)名字上也可以看出一二。
后來,計(jì)算機(jī)發(fā)明了,這兩個(gè)概念也就被般到了計(jì)算機(jī)上。那時(shí),存儲(chǔ)器很貴,一些科學(xué)家認(rèn)為在每行結(jié)尾加兩個(gè)字符太浪費(fèi)了,加一個(gè)就可以。于是,就出現(xiàn)了分歧。
Unix系統(tǒng)里,每行結(jié)尾只有“<換行>”,即“\n”;Windows系統(tǒng)里面,每行結(jié)尾是“<換行><回車>”,即“\n\r”;Mac系統(tǒng)里,每行結(jié)尾是“<回車>”。一個(gè)直接后果是,Unix/Mac系統(tǒng)下的文件在Windows里打開的話,所有文字會(huì)變成一行(因?yàn)橐型暾腬r\n才能換一行);而Windows里的文件在Unix/Mac下打開的話,在每行的結(jié)尾可能會(huì)多出一個(gè)^M符號(hào)。
c語(yǔ)言編程時(shí)(windows系統(tǒng))
\r 就是return 回到 本行 行首 這就會(huì)把這一行以前的輸出
覆蓋掉
如:
int main() {
cout << "hahaha"
<< "\r"
<< "xixi"
;
}
最后只顯示 xixi 而 hahaha 背覆蓋了
\n 是回車+換行 把光標(biāo) 先移到 行首 然后換到下一行 也就是
下一行的行首拉
int main() {
cout << "hahaha"
<< "\n"
<< "xixi"
;
}
則 顯示
hahaha
xixi
|