我想知道 Java 的反斜杠。计算机或编译器如何看到这个反斜杠以及它是如何存储在计算机中的?
我读到反斜杠删除了以下字符的特殊含义。但是计算机如何处理这个,以及在什么条件下以其他方式处理它?
例如空字符 \0
在 C 编程中,是字符串的结尾,但它是单个字符还是两个字符,即反斜杠 + 零?
反斜杠的目的是为人类指示还是为0-1计算机指示?
最佳答案
反斜杠 \
是一个字符,就像字母A
, 逗号 ,
,以及号码 4
.在某些编程语言中,特别是 C 及其后代(也可能是祖先),它在字符串或字 rune 字中用于转义其他字符。例如,'\a'
代表铃声字符,如果打印它( printf("%c", '\a')
),计算机会发出哔哔声。
作为 C 语言转义字符,它在很大程度上是编译器允许的人类构造,因此人类可以表达,例如,钟形字符。编译后的代码只存储字符——一个值为 7 的字节。为了绝对清楚,它不存储 \
后跟一个 a
.
在其他上下文中,反斜杠在运行时对程序具有某种意义。最著名的例子是正则表达式语法,其中反斜杠对其他字符进行转义,以便赋予它们特殊含义或去除它们可能具有的特殊含义。例如,grep '\<foo\>' file.txt
将在 file.txt 中定位带有单词 foo 的行。在这种情况下,反斜杠在运行时确实存在,并被程序解释为 <
的转义符。和 >
跟随他们。在这种情况下,\<
和 \>
根本不代表字符;它们分别表示与单词开头和结尾的零宽度匹配。
关于compiler-construction - 反斜杠 "\"到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4254887/