一直没搞清楚。符号ASCII码含义\n10NewlineNL\r13CarriageReturnCRCarriageReturn\r原意是光标回到行首,r的英文回车,控制符可以写成CR,即is,CarriageReturnNewline\n原意是光标到下一行(不一定到下一行行首),n的英文换行符,控制符可以写成LF,即,换行符在不同的操作系统中表现不同。比如在WIN系统下,这两个字符就是表达式在UNIX系统的原义中,换行符\n表示光标下行,回到行首。在MAC上,\r表示它返回到行的开头并转到下一行。至于ENTER键的定义,和操作系统相关的是一样的。通常的回车是两个相加。在计算机出现之前,有一种叫做电传打字机(TeletypeModel33)的东西,它每秒可以打出10个字符。但是它有一个问题,就是输入一行后需要0.2秒才能输入一个换行符,刚好可以输入两个字符。如果在这0.2秒内,传输了一个新字符,则该字符将丢失。因此,开发人员想了一个办法来解决这个问题,就是在每一行的末尾加上两个字符来表示结束。一种称为“回车”,告诉打字机将打印头定位在左边距;另一种称为“换行”,告诉打字机将纸张向下移动一行。这就是“换行”和“回车”的由来,从它们的英文名字就可以看出。后来,当计算机被发明出来的时候,这两个概念就被泛化到计算机上了。当时内存很贵,有科学家认为每行末尾加两个字符太浪费了,只加一个。于是,分歧产生了。/*===========================================*/\n:UNIX系统行结束符\n\r:window系统行结束符\r:MACOS系统行结束符/*============================================*/一个直接的后果是如果在Windows中打开Unix/Mac系统下的文件,所有文本将成为一行;而如果在Unix/Mac下打开Windows中的文件,在每行的末尾可能会多出一个^M符号。(这也是我常说的现象,哈哈,原来是这样的)用c++语言(windows系统)编程时,\r是return,回到这一行的开头,会覆盖之前的输出这一行,如:intmain(){cout<<"hahaha"<<"\r"<<"xixi";}最后只显示xixi,哈哈哈被覆盖\n是回车+换行将光标移动到行首再移动到下一行也就是下一行第一行拉intmain(){cout<<"哈哈哈"<<"\n"<<"xixi";}
