C言語入門|複雑な条件も自由自在!論理演算子による条件式の作り方

if 文や while 文を使って、
「1つの条件で判断する」ことには、もう慣れてきましたよね🙂

でも、実際のプログラムではこんな判断が必要になることがよくあります。

  • HPが少なくて、かつ毒状態なら回復する。
  • 会員である、またはクーポンを持っているなら割引する。
  • 時間内で、かつ入力が正しい場合だけ処理を進める。

このように、
複数の条件を組み合わせて判断したい ときに登場するのが
論理演算子 です✨

論理演算子って何?🤔

論理演算子とは、
true と false を組み合わせて、新しい true / false を作るための演算子
のことです。

関係演算子(== や < など)が
「1つの条件を評価する」ものだったのに対して、

論理演算子は
👉 条件どうしをつなぐ役割 を持っています。

論理演算子の種類と意味📋

まずは、基本となる2つを覚えましょう。

演算子読み方意味
&&アンド両方の条件が成立したら true
||オアどちらかの条件が成立したら true

この2つだけでも、
かなり複雑な判断ができるようになります😊

&&(かつ)の考え方🔗

では、&& を使った条件を見てみましょう。

if (score >= 80 && time <= 60) {
    printf("ミッションクリアです\n");
}

この条件は、文章で読むとこうなります。

もし score が 80以上で、かつ time が60以下なら

判定の流れ(例)

条件結果
score >= 80true
time <= 60false

true && false → false

👉 両方そろわないと true にはなりません。

||(または)の考え方🔀

次は || を使った例です。

if (itemCount == 0 || isBoss == true) {
    printf("特別イベントが発生します\n");
}

文章にすると、

itemCount が 0 または boss 戦中なら

判定の流れ(例)

条件結果
itemCount == 0false
isBoss == truetrue

false || true → true

👉 どちらか一方でも true なら OK です👍

  • && は「両方○なら通過」
  • || は「どちらか○なら通過」

というイメージを持つと混乱しません😊

論理演算子は組み合わせて使える✨

論理演算子は、1つだけでなく
複数組み合わせて使う こともできます。

if ((hp < 50 && level >= 10) || isEmergency == true) {
    printf("必殺技を使用します\n");
}

この条件は、次のような意味です。

  • HPが50未満 かつ レベルが10以上
    または
  • 緊急状態である

どちらかを満たしていれば、ブロックが実行されます。

関係演算子 + 論理演算子を組み合わせれば、
現実の判断ルールをそのままコードにできる
というわけですね😊

否定演算子 !(ノット)も覚えよう🙅‍♂️

「〜でない場合」を表したいときは、
否定演算子 ! を使います。

if (!(isLogin == true)) {
    printf("ログインしてください\n");
}

これは、

もしログインしていないなら

という意味になります。

評価の流れ

結果
isLogin == truetrue
!(true)false

! は、
評価結果をひっくり返す演算子
と覚えておくとOKです👌

数学とC言語の条件式の違い⚠️

ここで、初心者がつまずきやすい注意点です。

数学では、

10 < x < 20

と書きますが、
C言語ではこれは使えません。

正しくは、次のように書きます。

if (10 < x && x < 20) {
    printf("範囲内です\n");}

C言語では、
1つの関係演算子につき、比較は1回だけ
というルールがあるためです。

まとめ:論理演算子で判断力アップ✨

今回のポイントを整理しましょう😊

  • 論理演算子は条件どうしをつなぐための演算子
  • && は「両方成立」
  • || は「どちらか成立」
  • ! は「結果を反転」
  • 関係演算子と組み合わせることで複雑な判断が可能

論理演算子を使いこなせるようになると、
プログラムが一気に“賢く”なった と感じられるはずです✨