プログラミングの用語一覧へ
このページの目次

論理演算子とは?

最終更新:2026/08/18

3秒でわかる

複数の条件を組み合わせて真偽を判定する演算子。かつ・または・でない、を表し、入れ子のif文に頼らず条件を1行で書き分けられます。

もう少し詳しく

どういうものか

論理演算子は、真偽値を組み合わせて別の真偽値を作る演算子です。両方が真のときだけ真になる論理積(かつ)、どちらかが真なら真になる論理和(または)、真偽をひっくり返す否定(でない)の3つが基本です。Python では and or notJavaScript や Java では && || ! と書きます。

A B A かつ B A または B Aでない 真 真 真 真 偽 真 偽 偽 真 偽 偽 真 偽 真 真 偽 偽 偽 偽 真

なぜ必要か

現実の判定条件は、ひとつの比較で済むことがほとんどありません。会員であり、かつ在庫があり、かつ配送地域の対象である、といった複数の条件が同時に成り立つかを見ます。入れ子の if を積み重ねると横に深くなって読めなくなるため、条件そのものを1本の式にまとめます。

具体例

age = 20 has_ticket = True is_member = False if age >= 18 and has_ticket: print("入場できる") if is_member or age >= 65: print("割引の対象") if not has_ticket: print("チケットを購入してください") # 短絡評価。左が偽なら右は評価されない user = <a href="/glossary/none" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">None</a> if user is not None and user["name"] == "田中": print("該当") # userがNoneでもエラーにならない
// 短絡<a href="/glossary/evaluation" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">評価</a>を値として使う書き方 const name = input || "名無し"; // inputが空文字なら"名無し" const label = input ?? "名無し"; // nullとundefinedのときだけ"名無し" // オプショナルチェーンと組み合わせる if (user?.profile?.age >= 18 && !user.banned) { show(); }

つまずきやすいところ

日本語の「または」と論理和のずれが最初の壁です。「Aか B のどちらか」と言うとき、日常語では片方だけを指すことが多いのですが、or は両方が真でも真になります。片方だけを真としたいなら排他的論理和が必要です。

数学のような範囲の書き方も間違えやすい点です。if 0 < x < 10 は Python では意図どおり動きますが、JavaScript や Java では左から順に評価されて必ず真になり、条件として機能しません。x > 0 && x < 10 と分けて書きます。

短絡評価は便利な反面、右側に副作用のある処理を置くと実行されたりされなかったりします。if flag and save() のような書き方は、flag が偽のときに保存が走りません。

否定の分配も定番の間違いです。not (a and b)not a or not b であって、not a and not b ではありません。

似た用語との違い

対象
論理演算子真偽値を組み合わせる。and or not
比較演算子値を比べて真偽値を作る。== < >=
ビット演算子整数を2進数の桁ごとに計算する。& \ ~

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地論理演算子プログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

この用語を扱うコース

コース

Python入門:基礎文法編

74レッスン
コース

JavaScript入門:コードを動かす

23レッスン
コース

Java入門:基礎文法編

69レッスン
Pythonコースの全編を見る