2016-11-02 17 views
-7
#include "stdafx.h" 
#include <iostream> 

int x = 0; 

int main(){ 
std::cin >> x; 
if (x == 5 || 6) { 
std::cout << "5 or 6\n"; 
} 
else { 
std::cout << "Not 5 or 6\n"; 
} 
    return 0; 
} 

この単純なコードは、何番目の数値を入れても、コンソールに「5または6」を返します。なぜ私は本当に理解していない。 ||または演算子であるなら、それはうまくいくはずです。 xが5または6の場合は、「5または6」と表示されます。表示されていない場合は、「Not 5 or 6」を表示します。誰か説明してもらえますか?"Or"演算子はどのように動作しますか? (In C++)

+7

'x == 5 || 「6」は、* x * = 5が真*であるか、または* 6が真であり、後者が常に真である場合を意味する。 'x'が' 5'か '6'かどうかをテストするには' x == 5 || x == 6 'である。 – Biffen

+2

「6」は真ではありません。なぜなら、ゼロでないからです。 – dan04

+3

おそらくあなたがすることは、 '(x == 5 || x == 6)' – SunKnight0

答えて

5
if (x == 5 || 6) 

あなたは "xが5であるか、xが6であれば、" あなたがチェックしている、しかし、あなたが実際には "xが5である場合、または6場合は、" チェックしていると思います

if (x == 5 || x == 6) 

でなければなりません。次のように動作がC++標準で指定され

if (x == 5 || true) 

:C++では、if文でそれ自体で任意の非ゼロの数は、ので、あなたの最初のifはに相当し、trueと評価さ

ゼロ値、NULL ポインタ値、またはnullメンバポインタ値がfalseに変換されます。 any 他の値はtrueに変換されます。

関連する問題