我想知道Java的反斜杠。计算机或编译器如何看到这个反斜杠,以及它是如何存储在计算机中的?
我读到反斜杠去掉了下面这个字符的特殊含义。但是,计算机如何处理这个问题,以及在什么条件下以其他方式处理它呢?
例如,C编程中的空字符\0是字符串的结尾,但它是单个字符还是两个字符,即反斜杠+零?
反斜杠的目标是表示人类还是表示0-1计算机?
发布于 2010-11-23 18:16:41
反斜杠\是一个字符,就像字母A、逗号,和数字4一样。在一些编程语言中,特别是C及其后代(可能是祖先),它被用在字符串或字符文字中来转义其他字符。例如,'\a'代表钟形字符,如果您打印它(printf("%c", '\a')),它将从计算机发出蜂鸣声。
作为一个C语言转义字符,它在很大程度上是编译器允许的人类构造,因此人类可以表达,例如,钟形字符。编译后的代码只存储字符-一个值为7的字节。为了绝对清楚,它不存储后跟a的\。
在其他上下文中,反斜杠在运行时对程序有一定的意义。最广为人知的例子是正则表达式语法,在正则表达式语法中,反斜杠转义其他字符,以便赋予它们特殊含义或删除它们可能具有的特殊含义。例如,grep '\<foo\>' file.txt将在file.txt中查找带有单词foo的行。在这种情况下,反斜杠在运行时确实存在,并且被程序解释为后面的<和>的转义。在本例中,\<和\>根本不表示字符;它们分别表示与单词开头和结尾的零宽度匹配。
发布于 2010-11-23 18:13:45
这真的完全取决于上下文。反斜杠可以表示许多不同的东西,这取决于您看到它们在哪里使用。例如,在Windows中,反斜杠通常用作路径分隔符。
在基于C的编程语言(以及其他脚本语言)中,它们是。他们指出,他们右边的字符应该以不同于通常的方式解释。在您的示例中,\0是空终止符,反斜杠表示0应该由编译器解释(以及人类!)作为空字符,而不是数字零。它将被视为只有一个字符,因为一旦提供其功能,反斜杠就会被丢弃-除了用作转义字符之外,它在该序列中没有任何意义。
发布于 2010-11-23 18:17:52
反斜杠只有在它所处的情况被认为是特殊的情况下才能表示特殊的东西。例如,许多编程语言将它们用作字符串中的escape characters。这通常会改变下一个字符的含义。
https://stackoverflow.com/questions/4254887
复制相似问题