2011-06-27 51 views
1

我得到的錯誤是error: expected ' ; ' before ' { ' token代碼分析錯誤:預計'; '之前'{'標記 - 是什麼原因造成的?

我試圖通過;if (thisisanumber==5)以及else (thisisanumber!=5)後添加代碼固定。雖然這解決了第一個錯誤,但它會產生另一個錯誤,說error: ' else ' without a previous ' if '。我很想知道我在編寫代碼時犯了什麼錯誤,謝謝。

這裏是我的代碼:

#include <iostream> 

using namespace std; 

int main() 
{ 
    int thisisanumber; 

    cout<<"Whats the Password?: "; 
    cin>> thisisanumber; 
    cin.ignore(); 
    if (thisisanumber==5) { 
     cout<<"You've discovered the password! Wow, you're a genious you should be proud./n"; 
     } 
    else (thisisanumber!=5) { 
     cout<<"You've failed in knowing the password and therefore cannot enter, leave and do not come back. Goodbye!/n"; 
     } 
    cin.get(); 
} 
+0

那麼,首先,你宣佈主返回一個int,但我沒有看到任何地方的返回語句。 – cgmb

+3

@ Slavik81'main'在C++中隱式返回0。 –

+0

錯誤指向哪條線?此外,與您的問題無關的FYI,換行符是\ n不是/ n – Loduwijk

回答

3

由於只有兩種情況,因此不需要其他條件 - 只需使用else { ... }即可獲得所有thisisanumber==5false的情況。

if語句的結構是:

if (condition) { ... } 

else if (another condition) { ... } 
// ... more conditions 

else { ... all cases in which no previous condition matched end up here ... } 

...但else ifelse部分總是可選。

+2

請注意'else if'不是一種特殊的語言結構。它相當於'else {if(...)...}'。 –

+0

啊我修好了!謝謝! – C2shiningC

5

你缺少一個關鍵字if

else if (thisisanumber!=5) { 
    ^^ 

或者,因爲相反的條件thisisanumber == 5thisisanumber 5,你不需要條件:

else { 
2

會發生什麼是編譯器着眼於以下內容:

else (thisisanumber!=5) { 

,並認爲到自身:

「OK,這裏是else是下一個令牌if號好了,所以這是一個。? else子句,接下來的事情就是在else情況下做什麼,下一個標記{?是的,所以在其他情況下,我們執行一個語句,而不是一個塊。是下一個標記(是的,好的,所以我們的陳述被包裹在括號中...... [插入在這裏:解釋的其餘思想過程一個用圓括號表示的表達式]好吧,有匹配的)。呼。現在讓我們來匹配;這個聲明......等等,這是什麼? A {!這是不正確的。「

編譯器一次從左到右地讀取代碼一個標記,它在人類理解的邏輯意義上並不報告錯誤,實際上是錯誤。通過一次讀取一個令牌的代碼從左到右報告錯誤,它首先能夠檢測到有什麼錯誤

寫入else (thisisanumber!=5);將是合法的,這將意味着「if該數字不等於5(因爲if測試失敗),然後檢查數字是否不等於5,並且對比較的結果不做任何處理「。無意義,但合法。編寫else if (thisisanumber!=5) {...}也是合法的,這可能是你的意思e號碼不等於5(因爲if測試失敗),並且該號碼不等於5,那麼在{}內部執行此操作「。但是這是多餘的:考慮到某些東西不等於5,它肯定不等於5,所以指定測試兩次沒有意義。所以我們應該只寫else {...}

「else」對於「其他」實際上是一個較短的詞,並且在C++中也有此用途。

相關問題