在“else”错误之前预期的primary-expression

时间:2012-12-19 03:43:47

标签: c++ if-statement

我得到了第一个expected primary-expression before "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)

if(restart == 'Y' || restart == 'y');

删除那里的分号以修复错误。此;结束了您的if语句,这意味着else实际上不属于任何if语句,因此错误。

答案 1 :(得分:2)

在您的代码中,

if(restart == 'Y' || restart == 'y');

尾随分号是空语句,它构成if块的主体(从而结束)else块。此时你可能有一个if。但不是在后续声明不是main() ; 之后。

此外,更重要的是,在您的代码中,调用

main

假设它在全局命名空间中调用main,则无效。 {{1}} (在全局命名空间中)是一个特殊功能。它的特殊属性之一是它不能被称为。

编译器可能会在没有任何诊断的情况下允许它,但正式地,您可以使用未定义的行为来发生任何事情。

相反,使用循环来实现重复。

答案 2 :(得分:1)

if声明之后,您有一个尾随分号。