#include <iostream>
using namespace std;
int main()
{
string player1, player2;
char choice1, choice2;
cout<<"Enter the name of player number one"<<endl;
cin>> player1;
cout<<"Enter the name of player number two"<<endl;
cin>>player2;
//choose choice
while((choice1 !='X')|| ( choice1 !='O' ) )
{
cout<<"Play number one choose X or O"<<endl;
cin>>choice1;
}
while循环永远不会结束,即使我输入X或O.我希望它在输入任何值时结束
答案 0 :(得分:4)
这个表达式实际上永远不会是假的。我想你的意思是
while((choice1 !='X') && ( choice1 !='O' ))
答案 1 :(得分:1)
你拥有的声明永远不会是假的。将||
更改为&&
:
while((choice1 !='X') && ( choice1 !='O' ) )
想一想。想象一下choice1 ='O':
while((choice1 !='X')|| ( choice1 !='O' ) )
^true ^false == true
现在选择='X':
while((choice1 !='X')|| ( choice1 !='O' ) )
^ false || ^true == true
有关详细信息,请查看De Morgan's Laws
答案 2 :(得分:0)
这是因为OR(||)条件。如果输入“X”,则在第一个表达式上计算为false,但在第二个表达式上计算为true,因此while循环永远不会为false。使用“&amp;&amp;”代替。