我想知道Java的反斜线。计算机或编译器如何看到此反斜杠,以及如何将其存储在计算机中?
我读到反斜杠删除了以下字符的特殊含义。但是,计算机如何处理这种情况?在什么条件下以其他方式处理它?
例如,在C编程中,空字符\0
是字符串的结尾,但是它是一个字符还是两个字符,即反斜杠+零?
反斜杠的目的是为人类指示还是为0-1计算机指示?
最佳答案
反斜杠\
是一个字符,就像字母A
,逗号,
和数字4
一样。在某些编程语言中,尤其是C及其子代(也许是祖代),在字符串或字 rune 字内部使用它来转义其他字符。例如,'\a'
代表铃铛字符,如果打印出来,它将在计算机上发出蜂鸣声(printf("%c", '\a')
)。
作为C语言的转义字符,它在很大程度上是编译器允许的人为构造,因此人可以表达例如铃铛字符。编译后的代码只存储字符-一个值为7的字节。为了绝对清楚,它不存储\
和a
。
在其他情况下,反斜杠在运行时对程序意味着某种意义。最著名的例子是正则表达式语法,其中反斜杠转义其他字符,以便赋予它们特殊的含义或取消它们可能具有的特殊含义。例如,grep '\<foo\>' file.txt
将在file.txt中找到带有单词foo的行。在这种情况下,反斜杠实际上是在运行时出现的,程序将其解释为后跟的<
和>
的转义符。在这种情况下,\<
和\>
根本不表示字符。它们分别表示一个单词的开头和结尾的零宽度匹配。