論理演算子とその優先順位、C言語、および優先度の論理演算子の説明

C言語では、3つの論理演算子を提供します。

  1.  モノ:! (論理否定)。
  2.  二元:&&(論理AND)、||(論理OR)。


これらの3つの論理演算子、論理AND &&、||、または最低の優先順位ロジックが続くロジックはありません!最高の優先順位、。代入演算子として算術、論理、の即ち優先順位:

ロジックはありません!>算数> &&論理と、論理的または||> =代入

値は論理式、すなわちブール(ブール値)、新しいC99型の論理値である、いくつかのコンパイラは、このタイプをサポートしていないかもしれません。

論理真と論理偽値に変換する論理値。一般的に、それが判断された場合、唯一の値ゼロ(偽)は、すべての非ゼロ値(真)論理真値として決定することができる論理偽値として決定され、そして一般的な前記格納する場合、論理1を表します。真の値は、0は論理値FALSEを表しています。

そして、論理演算子&&運用ルール:のみ2つのオペランドが真の論理的で、結果はtrueになります。他の例では、結果が偽でした。

ロジックまたは算術演算子||ルール:2つだけのオペランドは、結果が偽であり、論理的に偽です。残りの例では、結果が真です。

たとえば、定義文と

  1. int型= 3 、B = 5

あります。

  • 非ゼロ以来!Aは:!、偽、0の値がtrueです。
  • || B:及びbのでゼロ、それが真又は論理値1に評価し、真です。
  • && B:ゼロのでB、真であるので、論理ANDの結果は、1の値が真です。
  • !|| B && 2による論理非最高の優先順位を、最初と組み合わされ、&&と||より高い優先度よりも、等価||(B && 2)、すなわち、0 || 1が真である、値(A!)! 1。


論理AND &&、||論理または「ショート」機能です。

  • そして、&&論理「ショート」:論理&&の左側のオペランドが論理偽であるとき、それは論理演算がfalseであるかどうかを決定するのに十分であり、それは、もはや右オペランドが行われているではありません。
  • ||論理または「短絡」が左オペランドロジックまたは論理的に真||は、論理演算が真であるかどうかを決定するのに十分ではない、それが右のオペランドが行われなくなったとき。


例えば:

  1. INT = 1 、B = 2 、C
  2. C = || ++ B
  3. printf "A =%のD、B =%のD、C =%d個の\ n " A、B 、C )。

非ゼロ値ので、それは本当であり、左のオペランドは、論理的に真または||、論理演算の結果が真である予測するのに十分である場合。したがって、「短い」の発生は、すなわち、右オペランド++ Bが実行されません。出力は次のようになります= 1、B = 2 、C = 1。

以下の分析プログラム、その動作の出力結果。

  1. 書式#include <stdio.hに>
  2. int型メイン無効
  3. {
  4. INT = 0 、B = 2 、C
  5. C != || ++ B && - 。
  6. printf "A =%のD、B =%のD、C =%d個の\ n " A、B 、C )。
  7. リターン0 ;
  8. }

コード分析:
混合オペレータ発現C = || ++ B &&以外に含まA--ロジック!、ロジック、または||、&&論理演算++接頭辞、接尾辞演算- 、代入演算子= 6。優先順位の関係論理演算子、算術演算子、代入演算子は以下のとおりです。

ロジックはありません!>算数> &&論理と、論理的または||> =代入

式代入演算子は、最も低い優先順位、最終的な割当てを有するからです。

優先度のレベル、発現!|| ++ B && A--は(!A)に相当する||((++ B)&&(A--))、 および論理の左のオペランド又は||!式が真であるかどうかを決定するのに十分で、その後、真です。したがって、発生右||の数((++ B)&&(A--が全体の動作、すなわち、「短い」 )) はもはや行われます。

実行結果:
A = 0、B = 2、C = 1の。

おすすめ

転載: www.cnblogs.com/HGNET/p/11791471.html