カテゴリ: C言語 更新日: 2026/02/09

C言語の論理演算子を徹底解説!初心者でもわかる条件チェック入門

C言語の論理演算子(&&, ||, !)の基礎
C言語の論理演算子(&&, ||, !)の基礎

先生と生徒の会話形式で理解しよう

生徒

「C言語のルールで条件を組み合わせる方法はありますか?」

先生

「C言語では論理演算子を使うことで複雑な条件を表現できます。」

生徒

「論理演算子ってどんなものですか?」

先生

「基本は三つで、ANDが『&&』、ORが『||』、そしてNOTが『!』です。どれも日常の考え方に当てはめるとわかりやすいので、一緒に見ていきましょう。」

1. 論理演算子とは?

1. 論理演算子とは?
1. 論理演算子とは?

論理演算子は、複数の条件をまとめて判断したり、条件の意味を反転したいときに使います。C言語でプログラムを書くとき、単純な比較だけではなくて、「AもBも満たしている場合だけ」「AかBのどちらかが満たされれば良い」「条件を否定したい」といった判定が必要になる場面があります。例えば、年齢が十八歳以上で、さらに学生である人だけを対象にしたいといった状況です。

初心者だと難しく感じますが、論理演算子は日常会話と同じ考え方です。「そして」「または」「~ではない」といった言葉をコンピュータが扱える形にしたものです。C言語の論理演算子を理解すると、条件分岐の幅が大きく広がり、複雑なプログラムも整理して書けるようになります。

2. AND(&&)の意味と使い方

2. AND(&&)の意味と使い方
2. AND(&&)の意味と使い方

ANDは「そして」という意味です。複数の条件がすべて真のときに真になります。例えば、「気温が二十五度以上で、さらに晴れているときだけ外出する」という判断に似ています。どちらか一つでも満たされないと、条件全体は偽になります。


#include <stdio.h>

int main(void)
{
    int age = 20;
    int student = 1; // 1なら学生、0なら学生ではない

    if(age >= 18 && student == 1)
    {
        printf("対象条件を満たしています。\n");
    }
    else
    {
        printf("条件を満たしていません。\n");
    }

    return 0;
}

この場合、年齢が十八歳以上で、学生ならば「対象条件を満たしています。」と表示されます。二つの条件をまとめて判断できるので、複雑な処理がわかりやすくなります。コンピュータは左から順番に判定を進めていくので、途中で偽が確定した場合、それ以降の条件を調べないことがあります。この仕組みは短絡評価と呼ばれ、処理が効率化されます。

3. OR(||)の意味と使い方

3. OR(||)の意味と使い方
3. OR(||)の意味と使い方

ORは「または」という意味です。条件のどちらか一つでも真なら、全体が真になります。例えば、「暑い日または雨の日は外で遊ばない」といった判断です。二つの条件のうち一つでも当てはまれば成り立ちます。


#include <stdio.h>

int main(void)
{
    int hot = 1;
    int rainy = 0;

    if(hot == 1 || rainy == 1)
    {
        printf("外では遊びません。\n");
    }
    else
    {
        printf("外で遊びます。\n");
    }

    return 0;
}

この場合、暑いときも雨のときも「外では遊びません」と表示されます。もし両方が偽でも、一つでも真になれば条件全体は真として扱われます。初心者が混乱しやすい点として、ORは「全部が真」ではなく「どれかが真で良い」という点です。

4. NOT(!)の意味と使い方

4. NOT(!)の意味と使い方
4. NOT(!)の意味と使い方

NOTは「~ではない」という意味です。条件の結果を反転させます。例えば「合格ではない」「満員ではない」というように、状態を否定したいときに使います。


#include <stdio.h>

int main(void)
{
    int pass = 0;

    if(!pass)
    {
        printf("合格ではありません。\n");
    }
    else
    {
        printf("合格です。\n");
    }

    return 0;
}

この例では変数がゼロなので偽になり、それを否定すると真です。つまり「合格ではありません」と表示されます。ゼロは偽、それ以外は真として扱われることがC言語の基本ルールです。

5. 現実の判断と結びつけて覚えよう

5. 現実の判断と結びつけて覚えよう
5. 現実の判断と結びつけて覚えよう

論理演算子を理解するには、普段の生活に置きかえるのが最も効果的です。例えば、買い物の条件を考えるとわかりやすくなります。「千円以上の割引商品で、さらに賞味期限が長いなら買う」というような条件がANDです。「甘いお菓子かしょっぱいお菓子なら買う」はORです。「必要ではないものは買わない」という考え方はNOTに近いです。C言語では、こうした判断を数値や変数で表現します。

論理演算子はコンピュータの判断力を高め、プログラムの安全性にもつながります。例えば、ユーザの入力が正しいかどうかをチェックするときは、複数の条件を組み合わせることがあります。そのときに論理演算子を使わないと、処理が複雑になったり、間違った動作につながることもあります。

6. 短絡評価と安全な条件書き方

6. 短絡評価と安全な条件書き方
6. 短絡評価と安全な条件書き方

論理演算子を使うときに注意したいのが短絡評価です。短絡とは、必要がない部分を調べないで処理を終える動きのことです。ANDでは最初の条件が偽だと、残りを調べません。ORでは最初が真だと、残りを調べません。これは効率を良くしますが、副作用のある関数を条件の中に書いた場合、予想と違う動きになることもあります。初心者のうちは条件の中に余計な処理を書かず、単純な式だけで判断すると読みやすくて安全です。

短絡評価は実際の場面で便利です。「変数が存在していて、さらに値が正しいときだけ処理する」といった書き方ができます。こうすることでエラーを防げる場合もあります。C言語のプログラムを安全に作るには、こうした考え方も大切です。

7. 三つを組み合わせた複雑な判断例

7. 三つを組み合わせた複雑な判断例
7. 三つを組み合わせた複雑な判断例

論理演算子は単体でも使えますが、三つを組み合わせることで、さらに正確なチェックができます。例えば、「年齢が十八歳以上で、学生または社会人、そして違法な条件ではない」というような判断も可能です。複数の判定をひとつにまとめることで、読みやすくて整理されたプログラムになります。


#include <stdio.h>

int main(void)
{
    int age = 20;
    int student = 1;
    int illegal = 0;

    if(age >= 18 && (student == 1 || !illegal))
    {
        printf("条件を満たしています。\n");
    }
    else
    {
        printf("条件を満たしていません。\n");
    }

    return 0;
}

括弧を使うことで、どの部分が先に判定されるかをはっきり示せます。読み手にとっても理解しやすくなり、バグが少なくなります。

カテゴリの一覧へ
新着記事
New1
C++
C++のメンバアクセス演算子を完全解説!初心者でもわかる . → :: の使い方まとめ
New2
Rust
Rustの文字列を極める!&str(文字列スライス)の基本概念とString型との違い
New3
C++
C++のキャスト演算子を完全解説!dynamic_cast・static_cast・const_cast・reinterpret_castを初心者向けに説明
New4
C++
C++開発のIDE選びを完全ガイド!初心者でもわかるCLion・Eclipse CDT・Qt Creator比較
人気記事
No.1
Java&Spring記事人気No1
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.2
Java&Spring記事人気No2
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.3
Java&Spring記事人気No3
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.4
Java&Spring記事人気No4
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.5
Java&Spring記事人気No5
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.6
Java&Spring記事人気No6
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.7
Java&Spring記事人気No7
C++
C++リンカとコンパイラのオプション設定を完全ガイド!初心者にもわかる開発環境の基礎
No.8
Java&Spring記事人気No8
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作