0

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

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

当我尝试编译时,它失败了

错误:“char”之前的预期主表达式。

请帮助我理解这一点

4

2 回答 2

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
  ...
}

更新:另见这个 SO question

于 2012-10-13T10:23:58.847 回答
1

尝试这个:

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

您在括号内声明变量,因此出现错误:

while (char c = cin.get() != 'q')
于 2012-10-13T09:16:50.977 回答