2016-07-24 6 views
0

私はプログラミングが初めてで、これを実行することはできませんし、どこでも私は答えを考えることができます。 function1if (m != 0 || 1)のif文は、がfunction2から渡されたときに読み取られないようです。ここに私のコードですが、どんな助けも高く評価されます。なぜ文が動作しないのですか

#include <iostream> 

void function1(int i); 

int main() { 
    using namespace std; 

    int i; 

    function1(i); 

return 0; 
} 
---------------------------------------------------------------------------- 
#include <iostream> 

void function2(); 

void function1(int i) { 
    using namespace std; 
    if (i != 0 || 1) /* not working when the variable 'i' is passed from function2 */ {  
    cout << endl << "i != 0 || 1" << endl; 
    function2(); 
    } 
    else if (i == 0 || 1) { 
     if (i == 0) { 
      cout << endl << "m == 0" << endl; 
     } 
     else if (i == 1) { 
      cout << endl << "m == 1" << endl; 
     } 
    } 
} 
---------------------------------------------------------------------------- 
#include <iostream> 

void function1(int i); 

void function2() { 
    using namespace std; 

    int i; 

    cout << endl << "type 0 or 1" << endl; 
    cin >> i; /* type 1 or 0 in here */ 
    function1(i); 
} 

答えて

3

user154248の答えは(少なくとも一部に)正しいですが、あなたはなぜに興味があるかもしれない...

operator!=の方が優先度が高い(つまり、前に評価されている)operator||であるためです。したがって、if節はif((i != 0) || 1)に相当します。

さらに、論理値が期待される式で使用される場合、0(ゼロ/ゼロ)以外の値はtrueと評価されるため、if((i != 0) || true)となります。そして今、何がi != 0に評価されると、全体の表現x || truetrueになります。

最後に–我々はしかし、問題がある...バックuser154248の答えで

です左:i != 0 || i != 1も常にtrueと評価されます:私が0の場合、私は1に等しい場合i != 1は、trueと評価され、 i != 0そうです...

実際に必要なものはi != 0 && i != 1です。

+0

ありがとう、私は通常、説明部分に忘れています:) – Ethan

+0

はい、それは動作します。あなたの説明を徹底的に理解するために、私はあなたの説明を調べます。ありがとうございました :) – Richard

3

この変更してみてください。これに

if (i != 0 || 1) 

を:

if (i != 0 || i != 1) 
+0

戻ってくれてありがとうございました:)それはうまくいきませんでした.. – Richard

+0

問題はありません。私はこのコードがたくさん整えられるように感じます。私は 'int'パラメータで' function1() 'を確立していますが、何も渡されていないようです。 'int'パラメータで外部から明示的にそうしないと、関数は呼び出されません。 – Ethan

+0

私の編集を見て、私はあなたのような何かをしようとしていると思う: – Ethan

関連する問題