我不了解代码的某些部分

时间:2019-01-17 20:26:02

标签: c++ c

我正在尝试从编程站点了解代码。这还没有很好的解释,我还没有找到必要的答案。

所以。val[0] == '\'' and x[0] == '\"'是什么意思?

2 个答案:

答案 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] =='=>恒定

“'){} =>此处失败。令牌生成器看到”,试图匹配字符串文字,但令牌生成器阻止字符串中包含未转义的单引号,因此不匹配任何内容...导致错误。选项二,令牌生成器 不会抱怨未转义的单引号,因为“必须有一个结尾”,因此找不到匹配项。