2012-10-13 4 views
0

저는 C++의 초보자입니다. 당신은이 C++ 구문의 오류는 무엇입니까?

char c; 
while((c = cin.get()) != 'q') 
{ //do anything 
} 

있습니다

while((char c = cin.get()) != 'q') 
{ //do anything 
} 

내가 컴파일하려고, 그것은 나를이 시도이

답변

2

표현식의 일부로 선언을 사용할 수 없습니다. 당신

while ((char c = cin.get()) != 'q') { ... 
//  |----------------| <---------------------- this is a declaration 
//  |-------------------------| <-------------- this is an expression 

은 (하지 중첩 된 괄호) 루프의 괄호 안에 직접 선언이 :

while (char c = cin.get()) { ... 

을하지만이 원하지 무엇 인 !c에 중지합니다.

while (int c = cin.get() - 'q') { // ugly code for illustrative purpose 
c += 'q'; 
... 
} 

을 그래서이됩니다 :

이 작동합니다

for (char c; (c = cin.get()) != 'q';) { // ugly code for illustrative purpose 
    ... 
} 

업데이트 : 또한 this SO question 참조하십시오.

1

이해를 도와주세요

error: expected primary-expression before "char".

을 다음과 같이 실패 : 다음 코드를 시도 변수를 괄호 안에 선언하므로 오류 :

while (char c = cin.get() != 'q') 
+0

예 나는 그것이 작동합니다. 하지만 왜 내 구조가 정확하지 않은지 알고 싶습니다. – bubble

+0

'while (char c = cin.get()! ='q ')' – bubble

+0

@bubble, 문장이 있고 표현식이 있습니다. 명령문은 표현식의 일부로 사용할 수 없습니다. 'char c = ...'는 명령문입니다. –

관련 문제