这个c ++构造的错误是什么?

时间:2012-10-13 09:15:08

标签: c++

我是C ++的新手。尝试以下代码:

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

当我尝试编译时,它失败并跟随

  

错误:在“char”之前预期的primary-expression。

请帮我理解这个

2 个答案:

答案 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')