4

我正在用 Kernighan 和 Ritchie 编写的 C 编程语言编写程序。

我目前正在练习 1-24,它说:

编写一个程序来检查 C 程序中的基本语法错误,例如不平衡的括号、方括号和大括号。不要忘记引号,单引号和双引号,escape sequences以及注释。

我做得很好......但我不知道escape sequences这些括号,括号和大括号会如何影响?

为什么他们警告转义序列?

4

3 回答 3

4

"\""中,有三个双引号字符,但它仍然是有效的字符串文字。中间"被转义,意味着外面的两个相互平衡。同样,'\''是一个有效的字符文字。

圆括号、方括号和大括号不受影响,当然除非它们出现在字符串文字中,而您由于转义引号而无法正确解析。

于 2013-02-13T17:00:39.430 回答
3

我猜他们的意思是你需要区分"(开始或结束一个字符串)和\"(这是一个"字符,可能在一个字符串内)

如果您要避免报告例如strlen("\")");括号不平衡,这一点很重要。

于 2013-02-13T17:00:47.850 回答
2

明显的可能性是字符串中的转义引号。如果您不考虑转义,您可能会认为字符串在那里结束。例如:"\")\""。是字符串文字的)一部分,因此它不算作不匹配的括号。

于 2013-02-13T17:00:56.720 回答