转自:http://bbs.chinaunix.net/thread-3590142-1-1.html
【回车和换行的历史】
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行,需要回车换行,此过程,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
【关于回车和换行的更详细的解释】
首先,打字机打完一行,意味着,从左到右把一行的字打完了,此时打印机的打印头处于最右边,所以,想要继续打字,需要(1)将把打印头移动到最左边,然后(2)打字所用的纸张,换到下一行。
而(1)打印头移动到最左边的动作,称之为回车;
(2)打字所用的纸张换到下一行,称之为换行。其是通过打字机的滚筒滚动,将纸向前滚动,就相当于打印头换了一行,处在新一行的最左边的开始的位置了,即所谓的走纸。
这就是“回车” 和“换行”的来历,从它们的英语名字上也可以看出一二。
对应到计算机系统中:
回车:将当前光标移动到同一行中的最左边(假设是从左到右的输入方式)
换行:保持当前光标的水平位置位置不变,换到下一行。
因此,将回车和换行联合起来,才是我们所常理解的含义:
输入完一行后,回车换行到下一行,即光标不仅仅是回到了最左边,而且也换到了下一行。
【不同系统中表示回车换行含义所用字符不同】
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
不同的系统里面,对于同样一个”回车换行”的含义,所用的字符不同:
Table 1 不同系统中回车换行对应的字符
系统类型 | 回车换行所用字符 |
Linux/Unix | \n=newline=0x0A=10=LF(Line Feed)=换行=Ctrl + J |
Windows/Dos | \r \n=0x0D 0x0A=CR LF=回车 换行 |
Mac | \r==return=0x0D=13=CR(Carriage Return)=回车=Ctrl + M |
提示:
1. 对应的,在Linux中通过键盘输入Enter回车键,输入的是\n=0x0A, 而Windows中的Enter键则是输入的是0x0D 0x0A。
2.其中关于0x0A对应的着Ctrl + J,0x0D对应着Ctrl + M等等相关的ASCII的控制字符及输入方式,可参见: