pep*_*ero 5 compiler-construction
我想知道Java的反斜杠.计算机或编译器如何看到这个反斜杠以及它是如何存储在计算机中的?
我读到反斜杠删除了以下字符的特殊含义.但是,计算机如何处理这个以及在什么条件下以其他方式对待它?
例如\0,C编程中的空字符是字符串的结尾,但它是单个字符还是两个字符,即反斜杠+零?
反斜杠的目的是指示人类还是指示0-1计算机?
反斜杠\是一个字符,就像字母A,逗号,和数字一样4.在某些编程语言中,特别是C及其后代(可能是祖先),它在字符串或字符文字中用于转义其他字符.例如,'\a'代表铃声字符,如果你打印它会从计算机发出一声蜂鸣声(printf("%c", '\a')).
作为C语言转义字符,它主要是编译器允许的人类构造,因此人类可以表达例如钟形字符.编译后的代码只存储字符-与值7字节只是要非常清楚,它并没有存储\后跟a.
在其他情况下,反斜杠在运行时对程序意味着什么.最着名的实例是正则表达式语法,其中反斜杠转义其他字符以便赋予它们特殊含义或带走它们可能具有的特殊含义.例如,grep '\<foo\>' file.txt将在file.txt中找到带有单词foo的行.在这种情况下,反斜线真的是有在运行时,通过与逃脱的程序进行解释<,并>遵循他们.在这种情况下,\<并\>不能代表所有的字符; 它们分别表示与单词的开头和结尾的零宽度匹配.