我是C ++的新手。尝试以下代码:
while((char c = cin.get()) != 'q')
{ //do anything
}
当我尝试编译时,它失败并跟随
错误:在“char”之前预期的primary-expression。
请帮我理解这个
答案 0 :(得分: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 :(得分:1)
试试这个:
char c;
while((c = cin.get()) != 'q')
{ //do anything
}
您在parantheses中声明变量,因此错误:
while (char c = cin.get() != 'q')