繁体   English   中英

什么反斜杠“\”真的意味着什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM