if语句总是被执行?

时间:2012-12-19 04:04:59

标签: c++ if-statement

  

可能重复:
  Expected primary-expression before “else” error

因此,当我尝试绕过第一个if语句继续执行程序的其余部分时,它总是执行第一个if语句,我只是想知道我正在做什么与else工作。我已经尝试在else语句中包含我的其余代码,但它也不起作用。没有编译器错误所以请帮助!谢谢!

if(Owin = win)
{
    cout << "The computer has defeated you!\n\n";
    cout << "Would you like to play again? (Y or N) : ";
    cin >> restart;
    if(restart == 'Y' || restart == 'y');
    {  
        cout << "\n\n\n";
        main()    ;  
    }

    else 
    {   
        cout << "Good Bye!\n\n";
        system("pause");
        return(0);
    }  
}
else
{ }

3 个答案:

答案 0 :(得分:2)

您使用=代替==。因此,您只需将win分配给Owin,如果if,则Owin > 0始终为真。

另外,从第二个;中移除if

else { }也是多余的,因为你在else内没有做任何事。

作为模板,这会更好:

int main()
{
    // Declarations...

    while(restart != 'Y' && restart != 'y')
    {
        if(Owin == win)
        {
            cout << "The computer has defeated you!\n\n";
            cout << "Would you like to play again? (Y or N) : ";
            cin >> restart;
        }
        else 
        {
            // Do the rest here
        }
    }
    cout << "Good Bye!\n\n";
    system("pause");
    return 0;
}

答案 1 :(得分:1)

if语句的语法不正确 if语句的正确语法是

if(condition)
{
 //body of if statement
}

你必须使用像== not =这样的检查操作符 if的条件应该返回boolean

=是初始化,==用于检查两件事是否相等 相反,否则使用

if(Owin > 0)

或使用

if(Owin == win)

答案 2 :(得分:0)

如果if(Owin = win)不为零/空,

win将始终为真,因为它会将win分配给Owin,然后检查Owin的值和将非零/非空值视为TRUE