while循环使用OR

时间:2014-07-24 19:26:00

标签: c++

#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.我希望它在输入任何值时结束

3 个答案:

答案 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;”代替。