2012-12-19 40 views
2

我得到第一個其他人的expected primary-expression before "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

您不能像這樣遞歸調用'main',並且您的編譯器應該警告您關於if中的單個等號。 – chris

+0

(使用一個體面的編程編輯器「自動縮進」可能會顯示這個微不足道的錯誤,它也將使代碼*更*可讀性。) – 2012-12-19 03:50:16

+0

其實克里斯我可以打電話給這樣的主...它在主要 – user1914650

回答

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

刪除分號有修復錯誤。這;結束您的if聲明,這意味着else實際上不是任何if聲明的一部分,因此錯誤。

+0

你得到報酬回答?這超級快!非常感謝!!! – user1914650

+0

@ user1914650它只是幸運的時機:)不客氣! –

1

您的if聲明後有一個尾隨分號。

+0

非常感謝你! – user1914650

2

在代碼中,

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

尾隨分號是形成的主體(因而結束)的if塊的空語句。在這一點上,你可能有一個else。但後來的聲明不是在if之後。

此外,和更重要的是,在你的代碼,調用

main() ; 

假設它調用在全局命名空間的main,是無效的。 main(在全局命名空間中)是一個特殊功能。其特殊性質是它不能被調用。

編譯器可能會允許它沒有任何診斷,但正式你有未定義的行爲哪裏可能發生。

而是使用循環來實現重複。

相關問題