2

最初の else でエラーが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
{
}
4

3 に答える 3

2

あなたのコードでは、

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

末尾のセミコロンは、ブロックの本体を形成する (したがって終了する)空のステートメントです。ifこの時点で、else. ただし、 . ではない後続のステートメントの後ではありませんif

さらに、さらに重要なことに、コードでは、呼び出し

main()    ;

mainグローバル名前空間で を呼び出すと仮定すると、無効になります。main(グローバル名前空間内) は特別な関数です。その特別な特性の中には、呼び出すことができないというものがあります。

コンパイラは診断なしで許可する場合がありますが、正式には、未定義の動作が発生する可能性があります。

代わりに、ループを使用して繰り返しを実現してください。

于 2012-12-19T04:04:19.680 に答える
2
if(restart == 'Y' || restart == 'y');

エラーを修正するには、そこにあるセミコロンを削除します。これでステートメント;が終了します。つまり、実際にはステートメントの一部ではないため、エラーが発生します。ifelseif

于 2012-12-19T03:44:35.023 に答える
1

ifステートメントの後にセミコロンがあります。

于 2012-12-19T03:44:36.677 に答える