2013-02-13 64 views
4

我正在用Kernighan和Ritchie的C語言編程。K和R練習1-24

我目前是運動1-24,上面寫着:

寫一個程序,檢查C程序基本的語法錯誤 像不對稱的括號,括號和大括號。不要忘記 報價,包括單雙和雙報,escape sequences和評論。

我已經做得很好......但我沒有得到escape sequences會影響這些圓括號,括號和括號?

他們爲什麼要提醒轉義序列?

+0

不要把'''作爲語法的一部分? – 2013-02-13 17:00:49

+3

'char excerpt [] =「\」啊哈!\「他說。」;' – pmg 2013-02-13 17:00:56

回答

4

"\"",有三個雙引號字符,但它仍然是一個有效的字符串文字。中間"被逃脫,意味着外面的兩個彼此平衡。同樣,'\''是有效的字符文字。

括號,括號和大括號不會受到影響,除非它們出現在字符串中,而您不會因轉義引號而正確解析它們。

+1

'圓括號,括號和大括號不會受到影響.' - 這就是我想要的!謝謝!!! – Sam 2013-02-13 17:05:34

+2

@SAM:'圓括號,括號和大括號不受影響。除非它們在一對引號內,在這種情況下,它們應該被忽略語法 – RobH 2013-02-13 17:15:29

3

我猜他們的意思是,你需要"區分(其開始或結束的字符串)和\"(這是一個"字符,可以在字符串中)

,如果你是這一點很重要避免報告例如strlen("\")");由於括號不平衡。

+0

謝謝!對不起,我一次只能接受一個...... – Sam 2013-02-13 17:15:26

2

顯而易見的可能性是字符串中的轉義引號。如果你不考慮逃生,你可能會認爲字符串在那裏結束。例如:"\")\"")是字符串文字的一部分,因此它不會被視爲不匹配的括號。

+0

謝謝!對不起,我一次只能接受一個...... – Sam 2013-02-13 17:17:17