C言語 論理演算子の使い方

論理演算子は、複数の条件を指定する時や、
真偽値の逆転処理を行う事ができます。

論理演算子には、&& || ! の3つがあります。
それぞれ次のような使い方ができます。

条件に合う場合は、条件に合わない場合はを返します。

&&の使い方

例)数学のテストが80点以上で、
さらに国語のテストが80点以上なら

( suugaku >= 80 && kokugo >= 80 )

||の使い方

例)数学のテストが80点以上、
もしくは国語のテストが80点以上なら

( suugaku >= 80 || kokugo >= 80 )
スポンサーリンク

!の使い方

例)数学のテストが80点以上ではない場合は

( !(suugaku >= 80) )

記述例

int b;
b = 1;

( b )     // 真になる
( !b )    // bを逆転させるので、偽になる
          // つまり、bが真だったら、偽
          //     bが偽だったら、真となる

論理演算子の優先度

複数の論理演算子が使われている場合は、
どれが先に実行されるかが重要になります。

そのため、どの演算子が優先的に
実行されるかを表す優先度があります。

優先度は、高い方から! && ||となります。

プログラム例

例)数学のテストが80点以上で、
  国語のテストが80点以上の場合、
または
  理科のテストが80点以上で、
  社会のテストが80点以上の場合は

( suugaku >= 80 && kokugo >= 80 || rika >= 80 && shakai >= 80)

例)数学のテストが80点以上の場合、
または
  国語のテストが80点以上で、
  理科のテストが80点以上の場合、
または
  社会のテストが80点以上の場合は

( suugaku >= 80 || kokugo >= 80 && rika >= 80 || shakai >= 80)

例)数学のテストが80点以上ではなく
  国語のテストが80点以上の場合、
または
  理科のテストが80点以上の場合、

( !suugaku >= 80 && kokugo >= 80 || rika >= 80 )

優先度はありますが、
カッコ()を付ければその部分が最優先となります。

複数の値を判定する場合や、複雑な判定をする場合には、
カッコ()を付けるようにした方が良いと私は思います。