2013-02-13 2 views
4

나는 C 프로그래밍 언어로 Kernighan and Ritchie의 프로그램을하고있다.K와 R 연습 1-24

불균형 괄호 괄호 및 괄호와 같은 기본적인 구문 오류 을위한 C 프로그램을 확인하는 프로그램을 작성 :

나는 말한다 운동 1-24에서 현재입니다. 따옴표, 싱글 및 더블, escape sequences 및 의견을 잊지 마십시오.

나는 모든 것을 잘 해냈다. 그러나 어떻게 escape sequences이이 괄호, 괄호 및 중괄호에 영향을 줄지는 모르겠다.

왜 이스케이프 시퀀스에 대해 경고 했습니까?

+0

는 "구문의 일환으로' –

+3

'문자 발취 [] =?" '\ 계산하지 마십시오 \ "아하! \"그가 말했다. ";' – pmg

답변

4

"\""에는 큰 따옴표가 세 개 있지만 여전히 유효한 문자열 리터럴입니다. 가운데가 " 인 경우 이스케이프 처리됩니다. 즉, 바깥 쪽 두 개는 서로 균형을 유지합니다. 마찬가지로 '\''은 유효한 문자 리터럴입니다. 물론 그들은 당신이 때문에 탈출 따옴표로 올바르게 구문 분석하지 않는 리터럴하는 문자열에 표시하지 않는

는 괄호 괄호 및 괄호는 영향을받지 않습니다.

+1

'괄호 괄호와 중괄호는 을 affected.'되지 않습니다 감사합니다 !!! – Sam

+2

@SAM :'괄호, 대괄호 및 중괄호는 영향을받지 않습니다. '쌍 따옴표 안에있는 경우를 제외하고는 구문에 대해 무시해야합니다 – RobH

3

나는 그들이 당신이 (시작 또는 문자열 끝나는) (아마도 문자열 내에서하는 " 문자)와 \" 당신이 있다면

이 중요하다을 " 구별 할 필요가 있다는 것을 의미 추측에는 요 예를 들어보고를 피하기 위해 strlen("\")");에는 균형이없는 괄호가 있습니다.

+0

감사합니다 죄송합니다!. 목적을 확인하지만 난 한 번 @ 하나 ... – Sam

2

명백한 가능성은 문자열 내부에 이스케이프 인용 될 것이다. 탈출구를 고려하지 않으면 문자열이 거기에서 끝났다고 생각할 수 있습니다. 예 : "\")\"". ) 리터럴 스트링의 일부이므로, 그것은 오 정합 괄호로 간주하지 않는다.

+0

감사합니다! 죄송합니다을 받아 들일 수 있지만 한 번에 하나씩 만 @를 받아 들일 수 ... – Sam