\n \r 换行回车的区别 2018-10-30
参考:
http://blog.chinaunix.net/uid-12038475-id-3766827.html
https://www.cnblogs.com/hq233/p/6389234.html
1.定义
回车:\r , 即 Carriage Return,控制字符可以写成 CR, 作用是将光标重新回到本行开头 ^M 是ascii中的'\r', 回车符,是16进制的0x0D,八进制的015,十进制的13;^M在vi编辑器中可以使用Ctrl+ v + m三个键打出来
换行:\n , 即 New line,控制字符可以写成LF,即 line feed,即光标移到下一行(这个操作是直接往下一行,不回到行首);其ascii代码是10,十六进制为0x0A
2. 三大系统关于 换行 这一动作的区别:
- Windows使用两个字符
\r\n
( 0x0D 和 0x0A )表示,即回到行首和下一行两个动作来实现换行 - Unix系统里,只使用一个字符
\n
来实现换行,即一个字符实现上面两个动作 - Mac系统中,只使用一个字符
\r
来实现换行,即一个字符实现上面2个动作。
这样造成的后果是,Mac/Unix系统下面的文件在Windows下面打开时,由于Mac/Unix系统只有一个字符来表示换行,因此,会导致所有文件都出现在一行;而windows里的文件在Unix下打开,在每行的结尾会多出一个 ^M 字符
3. 历史:
在计算机还没有出现之 前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正 好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车(return)”,告诉打字机把打印头定位在左边界;另一个叫做“换行(newline)”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历