\r:使光标回到行首
\n:使光标下移一格
即:\r是回車,\n是換行,前者使光标到行首,後者使光标下移一格。
通常用的Enter是兩個加起來的,即\r\n
舉個例子:
print("aaaa\r\nbbbbbb")
print("aaaa\nbbbbbb")
print("aaaa\rbbbbbb")
上面這段代碼的輸出結果可能一眼就能看出來。
是這樣:
aaaa
bbbbbb
aaaa
bbbbbb
aaaa
bbbbbb
但是結果真的就是想的那樣嗎?
事實上結果是這樣的
實際效果.png
為什麼會出現這樣的現象?
其實在計算機還沒有出現之前,有一種叫電傳打字機(Teletype Model 33)的,每秒鐘可以打10個字符。它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符。要是在這0.2秒裡面,又有新的字符傳過來,那麼這個字符就會丢失。
于是,研制人員想了個辦法解決這個問題,就在每行後面加兩個表示結束的字符。
一個叫做“回車”,告訴打字機把打印頭定位在左邊界;
另一個叫做“換行”,告訴打字機把紙向下移一行。
後來,計算機發明了,這兩個概念也就被搬到了計算機上。那時,存儲器很貴,一些科學家認為在每行結尾加兩個字符太浪費了,加一個就可以。于是,就出現了分歧。
一個直接後果是,Unix/Mac系統下的文件在Windows裡打開的話,所有文字會變成一行;而Windows裡的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符号。
現在再來看看開頭的例子:
print("aaaa\r\nbbbbbb")
print("aaaa\nbbbbbb")
print("aaaa\rbbbbbb")
編程時(無論是windows系統還是linux系統)
\r 就是return 回到本行行首,這就會把這一行以前的輸出覆蓋掉,具體内部細節就像是輸出緩沖區重新開始緩沖了一樣
而\n 是換行+回車,把光标先移到下一行,然後換到行首->也就是下一行的行首
所以若是看到代碼裡面本來應該換行的地方變成了整行
本來該輸出整行的時候卻隻輸出了一部分(跨平台一定要注意)
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!