我设置了一个while循环,我想选择r或h,我不想使用forloops但我想使用一个开关为什么当我输入r或h时它会不断重复一百万次cout为那个案例?我不能只说一次..
while (chooseMove == 'r' or 'h')
{
switch (chooseMove)
{
case 'r':
cout << "you chose r";
break;
case 'h':
cout << "you chose h";
break;
}
}
我也试过了forloops并遇到了同样的问题我无法弄明白
答案 0 :(得分:5)
你的意思是while (chooseMove == 'r' or chooseMove == 'h')
。您目前所写的内容相当于((chooseMove == 'r') or ('h'))
,而'h'
的评估结果为true
。
也许你也在寻求输入逻辑方面的帮助:
char c;
bool success = false;
while (std::in >> c)
{
switch(c) {
case 'r': /* ... */ success = true; break;
case 'h': /* ... */ success = true; break;
}
if (success) break;
}
如果输入流已关闭,这也将终止,您可以使用success
检查操作是否成功。
答案 1 :(得分:2)
因为这是你编程的目的。
如果您希望循环停止或暂停(并说等待输入),您应该将该代码添加到循环中。
while (chooseMove == 'r' or chooseMove == 'h')
{
switch (chooseMove)
{
case 'r':
cout << "you chose r";
break;
case 'h':
cout << "you chose h";
break;
}
std::cin >> chooseMove; //stop and wait for more input
}
答案 2 :(得分:0)
这是一个问题:
while (chooseMove == 'r' or 'h')
请改为尝试:
while ((chooseMove == 'r') || (chooseMove == 'h'))
当你写(这甚至是如何编译?or
不是C ++):
chooseMove == 'r' or 'h'
它被解释为:
(chooseMove == 'r') or ('h')
语句'h'
始终为true,因此while
循环将永远运行。
答案 3 :(得分:0)
chooseMove == 'r' or 'h'
是什么意思?根据C ++
标准,这被分组为(chooseMove == 'r') or ('h')
;该
隐式转换'h'
到bool
然后导致(chooseMove ==
'r') or ('h' != 0)
。第二个条件永远是真的。
答案 4 :(得分:0)
while (chooseMove == 'r' or 'h')
相当于:
while ( (chooseMove == 'r') or true)
//same as while ( (chooseMove == 'r') || true)
所以这是无限循环。请注意,or
和||
是相同的。
你想要的是这个:
while ( (chooseMove == 'r') or (chooseMove == 'h'))
//same as while ( (chooseMove == 'r') || (chooseMove == 'h'))