回車與換行的區別

我一直沒有搞得很清楚,回車和換行符有啥區別。
記得大一時,C語言老師就說過回車、換行,但都沒說得那麼細。前兩天,看寫兩句Perl代碼時,忽然想起區別一下回車和換行(\r和\n)。現在理解清楚了,記個筆記吧。

符號 ASCII碼 意義
\n 10 換行NL
\r 13 回車CR

回車 \r 本義是光標重新回到本行開頭,r的英文return,控制字符可以寫成CR,即Carriage Return
換行 \n 本義是光標往下一行(不一定到下一行行首),n的英文newline,控制字符可以寫成LF,即Line Feed
在不同的操作系統這幾個字符表現不同,比如在WIN系統下,這兩個字符就是表現的本義,在UNIX類系統,換行\n就表現爲光標下一行並回到行首,在MAC上,\r就表現爲回到本行開頭並往下一行,至於ENTER鍵的定義是與操作系統有關的。通常用的Enter是兩個加起來。

在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鐘可以打10個字符。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符。要是在這0.2秒裏面,又有新的字符傳過來,那麼這個字符將丟失。
於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字符。一個叫做“回車”,告訴打字機把打印頭定位在左邊界;另一個叫做“換行”,告訴打字機把紙向下移一行。
這就是“換行”和“回車”的來歷,從它們的英語名字上也可以看出一二。
後來,計算機發明瞭,這兩個概念也就被般到了計算機上。那時,存儲器很貴,一些科學家認爲在每行結尾加兩個字符太浪費了,加一個就可以。於是,就出現了分歧。

/*======================================*/
\n: UNIX 系統行末結束符
\n\r: window 系統行末結束符
\r: MAC OS 系統行末結束符
/*======================================*/
一個直接後果是,Unix/Mac系統下的文件在Windows裏打開的話,所有文字會變成一行;而Windows裏的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。(這也是經常說見到的現象,哈哈,原來是這樣的)

c++語言編程時(windows系統)\r 就是return 回到 本行 行首 這就會把這一行以前的輸出 覆蓋掉
如:
int main() {
cout << "hahaha" << "\r" << "xixi" ;
}
最後只顯示 xixi 而 hahaha 被覆蓋了
\n 是回車+換行 把光標 先移到 行首 然後換到下一行 也就是 下一行的行首拉
int main() {
cout << "hahaha" << "\n" << "xixi" ;
}
則 顯示
hahaha
xixi
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章