2016-10-19 28 views
0

ブール論理と演算子を理解しようとしています。 この例が見つかりましたが、この式が次のように評価される理由を理解できません。なぜ!(0 || 1 || 0)は0ですか?

セイ、= 0、B = 1、C = 0

  Expression   Will Evaluate to 
val1 = !(a || b || c);  !(0 || 1 || 0) = !(1) = 0 

私はそれを見るように、VAL1はabcない、なぜそれがない1に評価?

答えて

0

.... val1とはいえ、これは正しくない

...またはc Bまたはないではないではありません。かっこ内の0 || 1 || 0が最初に評価されます。この例は正しいです。

0

のはval1 = 1 1 = !(0 || 1 || 0) 1 = !(1)を言ってみましょう - それは 1 = 0をval1のに等しい値のみであるため、 - それはそれを否定し、その後

0

ない(またはbまたはc)のように、第一または操作を評価それは(aではない)または(bでない)または(cでない)と同じではありません。

実際、(aではない)AND(not b)AND(not c)と同じです。

ORとのOR演算子のいずれかがFALSEの場合、FALSEの結果が返されます。

整数または実数の算術演算と同様に、演算の順序が結果を大きく変える可能性があります。

0

ステップバイステップで行きましょう。

val1 = !(0 || 1 || 0);

まず、0 || 1があるため||手段 '真それらの少なくともいずれかに該当する場合、そうでない場合はfalse'、1に評価し、1 =真、0 =偽ます。それらの少なくとも1つは、今、私たちはval1 = !(1);を持っている1であるため、

は、だから今、それはここで1 || 0 val1 = !(1 || 0);で再び、1と評価されます。私はそれを見るよう!入力の反対を意味するので、= 0 !(1)

、VAL1は、またはc Bかしないではない、なぜそれがない1と評価しますか?

あなたの言うことは、val1 = !0 || !1 || !0と書かれているからです。それはかっこを持たないので、全く異なっています。括弧は、「括弧内のすべてを最初に評価する」ことを意味します。