2011-06-27 5 views
1

私は取得していますエラーは、私が;if (thisisanumber==5)後だけでなく、else (thisisanumber!=5)後に追加することで、コードを固定しようとしたerror: expected ' ; ' before ' { ' tokenコードの解析エラー:予期した '; 'before' {'token - これは何の原因ですか?

です。これにより最初のエラーが解決され、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

最初は、mainをintとして返すと宣言しましたが、return文はどこにも表示されません。 – cgmb

+3

@ Slavik81 'main'はC++で暗黙的に0を返します。 –

+0

エラーの対象となる行はどれですか?また、あなたの質問と無関係のFYI、改行は\ nではない/ n – Loduwijk

答えて

3

2つのケースしかないので、別の条件は必要ありません。else { ... }を使用すると、thisisanumber==5falseのすべてのケースをキャッチします。

if (condition) { ... } 

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

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

...しかしelse ifelse部品は常にオプションです。

if文の構造があります。

+2

'else if'は特別な言語構造ではないことに注意してください。これは 'else {if(...)...} 'と等価です。 –

+0

ああ、私はそれを修正しました!ありがとうございました! – C2shiningC

5

あなたがキーワードif行方不明:

else if (thisisanumber!=5) { 
    ^^ 

代わりに、thisisanumber == 5とは反対の条件がthisisanumberない 5であるということであるから、あなたドン条件が必要ない:

else { 
2

何が起こることは、コンパイラは、次のを見ている:

else (thisisanumber!=5) { 

と自分自身に考えて:。

「OK、ここelseだ次のトークンifれる米国特許第オクラホマので、これは?次のトークンはブロックではなく単一の文を実行します次のトークンは(です?はい。そうです、私たちのステートメントはカッコで囲まれています... [ここに挿入:残りの考え方の解釈括弧でくくられた式を入力する] [OK]は一致する)があります。ホウさて、この文のために;をマッチさせましょう...待って、これは何ですか? A {!それは正しくありません」

コンパイラは、コードを一度に1トークンずつ左から右に読み込んでいますが、人間が理解している論理的な意味で実際にエラーが発生した時点ではエラーは報告されません。コードを一度に1トークンずつ左から右に読み取ることで、何かが間違っていることを最初に検出できるポイントでエラーを報告します。

else (thisisanumber!=5);と書くことは合法です。数値が5に等しくない場合(ifテストが失敗したため)、その数値が5と等しくないかどうかを確認し、その比較の結果には何もしないでください」意味はありませんが合法です。else if (thisisanumber!=5) {...}これはおそらくあなたが意味していたものです。 e番号が5に等しくない(ifテストが失敗したため)、番号は5と等しくないので、{} "の内部にこのようなことをしてください。しかし、これは重複しています。何かが5に等しくない場合、5と等しくないことが保証されているので、テストを2回指定する必要はありません。ですから、else {...}と書いてください。

"else"は実際には "otherwise"という短い単語で、その目的はC++でもあります。

関連する問題