“\'”转义序列的目的是什么?

10

2
看看你能不能做 """。你会得到答案的。 - Krishnabhadra
"""不同于"'"。 - user1870398
7个回答

11

如果您想要一个字符字面量,那么您需要它:

char apos = '\'';

6

如果您需要使用'字符,那么您需要它:

char c = '\'';

3

我认为这只是为了在字符常量和字符串字面值之间保持一致。

语言本来可以要求包含单引号的字符串字面值写成"'"而不是"\'",包含双引号的字符常量写成'"'而不是'\"'。(当然,"'"'"'都是完全有效的。)

允许但不要求在字符串字面值中转义',在字符常量中转义",使语言变得更加灵活,让字符串字面值和字符常量使用相同的转义集,并且不会造成任何特殊的影响。

至于为什么你应该使用一种形式还是另一种形式,那就取决于你自己。使用你更熟悉的形式。


1
就像Kerrek所说的那样,如果你想要字面上的字符而不是被计算后的字符,你需要转义该字符。例如,在正则表达式中使用 "\"\"" 或者一个字面上的括号。这样可以防止解释器将转义字符作为除实际字符值以外的任何东西进行计算。

1

比如说,如果你想从服务器端生成一个锚点的 HTML,显然你会使用类似下面这样的 string.format...

  X = string.Format("<a href=\"tel:{0}\" onclick=\"Javascript: goog_report_conversion({1}); return false;\">{0}</a>", displayText, sRegPhone);

我们在函数调用和锚点的href中需要使用双引号,但是如果在语句中像下面这样使用会出错...

  "<a href="tel:{0}""></a>

所以,为了克服这个问题,我们使用转义序列,在服务器端将下一个文字转义(不予考虑)为\,但会在输出区域或客户端一起生成被跳过的文字...如下所示。
<a onclick="Javascript: goog_report_conversion(2818669180); return false;" href="tel:(281) 866-9180">(281) 866-9180</a>

因此,它主要用于转义即将出现的文字......


0
在简单的英语中,可以说编程语言的作者们不得不使用一些特殊字符来编译代码。
为了让程序员能够使用这些字符,他们采用了使用“/”的方法。
这种方法几乎在所有的编程语言中都很常见。

0

\是用于转义“特殊字符”的字符。这是什么意思?

这意味着当解析器遇到某些字符时,它会执行一些神奇的操作。这些神奇的操作是在解析过程中状态的改变。状态的改变就像:现在你进入了一个字符串字面量,现在你换行了,现在你离开了一个字符常量等。

选择使用'\'字符来抑制它前面字符的神奇含义。因此,在行末的\将抑制其含义,允许在编辑器中构建跨多行的宏,但由预处理器视为1个词元(预处理器使用换行符作为分隔符)。

如果您在"之前加上\,它将抑制其作为字符串字面量的开始或结束的含义,与'相同。

同时还确定了,如果在一个非魔法字符之前添加\将被忽略(当没有魔法时,你不能抑制魔法)。因此,写 "\'" 不是问题。在字符串文字中, ' 没有任何魔法意义,转义只是简单地被忽略。您可以在字符串文字中使用 \ 作为任何字符的前缀,没有问题(当然除了数字和八进制、十进制和十六进制字符的x)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接