2016-08-19 6 views
-1

なぜ私は正しい文字列を得ることができません。私は表現に間違っていますか?私はそれを理解することはできません。私は何時間も寝かせた。なぜ私またはオペレータが動作しないのですか?

#include <iostream> 
#include <stdlib.h> 
#include <stdio.h> 
#include <string> 
using namespace std; 

int main(){ 
string var = "y"; 
string constant ="y"; 

if ((var != constant)||(var != "n")){ 
cout << "error"; 
} 
else { 
cout << "right" // this is what it should print 
} 
} 

私は、オペレータが使用していることを理解しています。記号として。だから私のプログラムは自分の仕事を行うことができません

+0

期待どおりの結果が得られましたか?コードは 'if'条件に従って" error "を出力します。 – songyuanyao

+0

'var!=" n "'が真であるので、式全体が真です。 – dasblinkenlight

+0

は 'var'は、一度に二つの異なるものに等しい... – Dmitri

答えて

2

あなたのプログラムの結果は正しいです。 varので

は次いで発現

var != "n" 

は明らかに真であり、 "Y" に設定されています。このように

if (.... || var != "n") 

がtrueと評価された完全な表現。定義によって、「何か真実」は常に真です。

elseステートメントをどれだけ実行しても、それは実行されません。それはないはずですから。

+0

ありがとう! –

0

プログラムには何も問題はありません(14行目の構文エラーを除いて)。 varconstantが等しくない場合、または varは'n'と等しくありません。なぜなら、彼またはオペレータが1つの条件だけを見つけた場合、それは真を返すためです。

私はあなたが望んでいると信じて、と、&&、演算子です。両方の条件が真である場合にのみ真を返します。

これは、&&オペレータであっても、あなたのコードを変更する必要があると言われています。あなたのエラー\バグは意味をなさない。あなたのプログラムに:

#pseudo code 

if(false and false) 
    print error 
else 
    print ... 

あなたのプログラムは、単にあなたが設定したルールに従っていると言いました。 if文は常にtrueと評価されますので、あなたのelse声明上記if文は達していないことがありません。

関連する問題