我正在尝试从编程站点了解代码。这还没有很好的解释,我还没有找到必要的答案。
所以。val[0] == '\'' and x[0] == '\"'
是什么意思?
答案 0 :(得分:2)
#include <iostream>
int main() {
char a = '\'';
std::string b = "\"";
std::cout << "a=" << a << std::endl;
std::cout << "b=" << b << std::endl;
return 0;
}
输出将是:
a='
b="
如注释所示,这是转义'
和"
字符的唯一方法。您可以忽略[0]
,因为这仅表示它是一个字符数组,并且您正在访问第一个字符。
答案 1 :(得分:0)
就像其他人提到的那样,反斜杠用于转义某些字符。
要说明为什么我们需要转义字符,请看下面的示例:
if(val[0] == ''' && x[0] == '"'){
}
对于一个人来说,目的很明确,但是对于编译器来说,这是模棱两可的。
编译器将首先尝试从程序中提取令牌,如下所示:
if => IF
(=>(
val =>标识符
[=> [
0 =>整数
] =>]
== => EQ_OP
''=>恒定
'&& x [0] =='=>恒定
“'){} =>此处失败。令牌生成器看到”,试图匹配字符串文字,但令牌生成器阻止字符串中包含未转义的单引号,因此不匹配任何内容...导致错误。选项二,令牌生成器 不会抱怨未转义的单引号,因为“必须有一个结尾”,因此找不到匹配项。