我正在用 Kernighan 和 Ritchie 编写的 C 编程语言编写程序。
我目前正在练习 1-24,它说:
编写一个程序来检查 C 程序中的基本语法错误,例如不平衡的括号、方括号和大括号。不要忘记引号,单引号和双引号,
escape sequences
以及注释。
我做得很好......但我不知道escape sequences
这些括号,括号和大括号会如何影响?
为什么他们警告转义序列?
我正在用 Kernighan 和 Ritchie 编写的 C 编程语言编写程序。
我目前正在练习 1-24,它说:
编写一个程序来检查 C 程序中的基本语法错误,例如不平衡的括号、方括号和大括号。不要忘记引号,单引号和双引号,
escape sequences
以及注释。
我做得很好......但我不知道escape sequences
这些括号,括号和大括号会如何影响?
为什么他们警告转义序列?
在"\""
中,有三个双引号字符,但它仍然是有效的字符串文字。中间"
被转义,意味着外面的两个相互平衡。同样,'\''
是一个有效的字符文字。
圆括号、方括号和大括号不受影响,当然除非它们出现在字符串文字中,而您由于转义引号而无法正确解析。
我猜他们的意思是你需要区分"
(开始或结束一个字符串)和\"
(这是一个"
字符,可能在一个字符串内)
如果您要避免报告例如strlen("\")");
括号不平衡,这一点很重要。
明显的可能性是字符串中的转义引号。如果您不考虑转义,您可能会认为字符串在那里结束。例如:"\")\""
。是字符串文字的)
一部分,因此它不算作不匹配的括号。