當我遇到以前沒有見過的東西時,我正在查看strace
調用的輸出。這個例子輸出爲以下(從調用recv
,闡述):直接打印轉義字符及其與ASCII表的關係
recv(13, "%\0\0\0\23\0\1\0\5\0\0\0\0\0\0\0\0\0\0\0\26\0\0\0\0\0\0\0\0\0\0\0\5\0\20\0\5", 37, 0)
而其他結果如下:
recv(10, "OK\n", 3, 0)
不管什麼實際的recv旨在傳達,我注意到,每個被髮送的角色都被轉義了。我認爲也許這些逃脫的角色以一對一的方式與ASCII Table相關(即\10
相當於\n
)。
所以,快速測試,如:
printf("Before newline \10 After newline);
提供了以下結果:
Before newline After newline
我又試圖只是打印小數形式的字符本身的價值:
printf("Value: %d", '\10');
給出結果:
Value: 8
於是,自然而然地,由於差值是二我想:
printf("Before newline \12 After newline);
產地:
Before newline
After newline
所以,似乎躲過了這場格式的字符做涉及以「少於2」的關係加入ascii表。
爲什麼ascii表和轉義字符之間有兩個不同?
這是什麼意思,它爲什麼這樣工作?
這僅僅是一個微妙的
strace
?
一點更多的測試,我注意到有沒有兩者的之間的「少2」的關係後,上文提到的。下面的答案直接解釋了這一點。 – sherrellbc