[英]What does back slash “\” really mean?
我想知道Java的反斜杠。 計算機或編譯器如何看到這個反斜杠以及它是如何存儲在計算機中的?
我讀到反斜杠刪除了以下字符的特殊含義。 但是,計算機如何處理這個以及在什么條件下以其他方式對待它?
例如,C編程中的空字符\\0
是字符串的結尾,但它是單個字符還是兩個字符,即反斜杠+零?
反斜杠的目的是指示人類還是指示0-1計算機?
反斜杠\\
是一個性格,就像信A
,逗號,
和數字4
。 在某些編程語言中,特別是C及其后代(可能是祖先),它在字符串或字符文字中用於轉義其他字符。 例如, '\\a'
代表鈴聲字符,如果你打印它會從計算機發出一聲蜂鳴聲( printf("%c", '\\a')
)。
作為C語言轉義字符,它主要是編譯器允許的人類構造,因此人類可以表達例如鍾形字符。 編譯后的代碼只存儲字符-與值7字節只是要非常清楚,它不存儲\\
后跟a
。
在其他情況下,反斜杠在運行時對程序意味着什么。 最着名的實例是正則表達式語法,其中反斜杠轉義其他字符以便賦予它們特殊含義或帶走它們可能具有的特殊含義。 例如, grep '\\<foo\\>' file.txt
將在file.txt中找到帶有單詞foo的行。 在這種情況下,反斜杠確實在運行時存在,並由程序解釋為跟隨它們的<
和>
轉義。 在這種情況下, \\<
和\\>
根本不代表字符; 它們分別表示與單詞的開頭和結尾的零寬度匹配。
這完全取決於具體情況。 反斜杠可能意味着許多不同的東西,具體取決於您看到它們的使用位置。 例如,在Windows中,通常將反斜杠視為路徑分隔符。
在基於C語言的編程語言(以及其他腳本語言)中,它們是轉義字符 。 他們指出,他們右邊的角色應該與通常的角色不同。 在您的示例中, \\0
是一個空終止符,反斜杠表示編譯器(和人類!)應該將0
解釋為空字符而不是數字零。 它將被視為只有一個字符,因為一旦其函數被提供,反斜杠就會被刪除 - 除了用作轉義字符之外,它在該序列中沒有任何意義。
反斜杠只表示如果使用的情況認為是特殊的東西。 例如,許多編程語言將它們用作字符串中的轉義字符 。 這通常會改變下一個字符的含義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.