回车"(carriage return)和"换行"(line feed)与 ASCII

关于“ 回车”(carriage return) 和“ 换行”(line feed) 这两个概念的来历和区别。

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”
[这说法对么?] 。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。


c语言编程时(windows系统)

\r (return)就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉

如:
int main() {

cout << "hahaha" << "\r" << "xixi" ;


}
最后只显示 xixi 而 hahaha 背覆盖了

\n (newline)是回车+换行 把光标 先移到 行首 然后换到下一行 也就是下一行的行首拉

int main() {

cout << "hahaha" << "\n" << "xixi" ;


}
则 显示
hahaha
xixi

ASCII表

ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符
0 NUT 32 (space) 64 @ 96
1 SOH 33 65 A 97 a
2 STX 34 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 X 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 \ 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 ~
31 US 63 ? 95 127 DEL
NUL VT 垂直制表 SYN 空转同步
SOH      标题开始 FF       走纸控制 ETB      信息组传送结束
STX      正文开始 CR       回车 CAN      作废
ETX      正文结束 SO       移位输出 EM       纸尽
EOY      传输结束 SI        移位输入 SUB      换置
ENQ      询问字符 DLE      空格 ESC      换码
ACK      承认 DC1      设备控制1 FS       文字分隔符
BEL      报警 DC2      设备控制2 GS       组分隔符
BS       退一格 DC3      设备控制3 RS       记录分隔符
HT       横向列表 DC4      设备控制4 US       单元分隔符
LF       换行 NAK      否定 DEL      删除


[PFYU] In ASCII andUnicode, the carriage return is defined as 13 (orhexadecimal 0D); it may also be seen ascontrol+M or ^M. In the C programming language, and many other languages influenced by it, \r denotes this character.[1]

[PFYU] Most textual Internet protocols (including HTTP, SMTP, FTP, IRC and many others) mandate the use of ASCII CR+LF (0x0D 0x0A) on the protocol level, but recommend that tolerant applications recognize loneLF as well. In practice, there are many applications that erroneously use theC newline character '\n' instead (see sectionNewline in programming languages below)

你可能感兴趣的:(程序设计/JSE/语法)