答案 0 :(得分:11)
\r
将光标返回到行的开头,而不是下一行。在Linux中使用\n
时,隐含\r
,在Windows中,它不是。
在类Unix系统中使用\r
可能会导致覆盖同一行。
答案 1 :(得分:8)
我建议你阅读this。
简而言之,Windows中的换行符是"\r\n"
,而Unix中的换行符只是"\n"
(而且,为了让生活变得困难,旧版Mac中的换行符为"\r"
)
答案 2 :(得分:2)
实际上,回车应该将光标移动到当前行的开头。然后,换行符将光标精确地向下移动一个。
如今,编译器通常会自动将一个或另一个转换为Windows上的\r\n
或Linux上的\n
。 Mac曾经使用过\ r \ n但它们已经改为\ n约定。
(编辑:删除了错误/未经测试的语句)
答案 3 :(得分:1)
阅读The Great Newline Schism它以幽默的方式详细解释了所有内容。
答案 4 :(得分:0)
不,他们不是。现代文本编辑器经常将它们视为相同,但因为它们的旧用途对数字文字处理器没有多大意义。
例如\r
字面意思是“返回到行的开头”。虽然这可能对打字机很有用,如果你只想覆盖该行上的所有内容,这种功能对数字类型没有多大意义。
\n
只是向下移动而不返回到开头。这对于用于压痕或项目符号的打字机也很有用。同样,对于数字类型而言,这不是什么有用的东西。
Telnet就是这两个字符仍以这种方式使用的一个例子。
两个字符都包含在ascii语言中,因为当它被规范时,他们没有意识到在打字机上有用的功能在计算机上没有多大意义。
答案 5 :(得分:0)
打字机的旧时代啊......
两种情况之间的差异源于在打字时直接对纸张进行的日期。它需要两个动作才能进入下一行:
拆分这两个动作有助于回到一个精确的角色位置来纠正它(没有办法上升一行,或者留下一个角色!)。对错误的角色进行纸质白化并按下该键会整齐地清除那个错误的角色,然后你可以再次返回并按下正确的键 (虽然有一把钥匙没有移动马车。)
在年轻的计算机时代,这些行为被转换为1 {1到\r
用于回车,\n
用于转移'纸张'。
如今主要的操作系统显然对于计算机技术是否仍然需要这样做有不同的意见,其中回到以前的位置要容易得多。但是,在现代编程语言中,您通常会看到\n
被认为是\r\n
。