【发布时间】:2012-10-13 22:30:03
【问题描述】:
我是 C++ 的新手。尝试了以下代码:
while((char c = cin.get()) != 'q')
{ //do anything
}
当我尝试编译时,它失败了
错误:“char”之前的预期主表达式。
请帮助我理解这一点
【问题讨论】:
标签: c++
我是 C++ 的新手。尝试了以下代码:
while((char c = cin.get()) != 'q')
{ //do anything
}
当我尝试编译时,它失败了
错误:“char”之前的预期主表达式。
请帮助我理解这一点
【问题讨论】:
标签: c++
您不能将声明作为表达式的一部分。
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。
【讨论】:
试试这个:
char c;
while((c = cin.get()) != 'q')
{ //do anything
}
您在括号内声明变量,因此出现错误:
while (char c = cin.get() != 'q')
【讨论】:
while(char c = cin.get() != 'q')
char c = ... 是一个声明。
(true != 'q') 仍然是一个有效的比较。它应该总是返回true。不是吗?