本文へスキップ
BecomeCoder

C言語コース · 第2章 演算子 · レッスン6

比較・論理演算子 ― 条件式を作る

ブラウザで完結

導入

「等しいか」「大きいか」を調べる比較演算子と、それらを組み合わせる論理演算子は、この後の章で学ぶ条件分岐の土台になります。

説明

C言語には(C++ のような)専用の bool 型はありません。比較や論理演算の結果は int で、0 が偽(false)、0 以外(多くの場合 1)が真(true) を表します。この「0か非0か」というルールは、C言語のいろいろな場面で顔を出します。

#include <stdio.h>

int main(void) {
    int a = 5, b = 3;
    printf("%d\n", a == b);  // 0(等しい?→ 偽)
    printf("%d\n", a != b);  // 1(等しくない?→ 真)
    printf("%d\n", a > b);   // 1
    printf("%d\n", a <= b);  // 0
    return 0;
}

「等しい」は ==(イコール2つ)です。=(1つ)は代入なので混同に注意します。

論理演算子 &&(かつ)・||(または)・!(否定)で条件を組み合わせます。

#include <stdio.h>

int main(void) {
    int age = 25;
    int member = 1;  // 1=true, 0=false の代わりに使う
    printf("%d\n", age >= 20 && member);       // 1(両方 真)
    printf("%d\n", age < 18 || age > 60);       // 0(どちらも 偽)
    printf("%d\n", !member);                    // 0(真の否定)
    return 0;
}

member のように「真偽を表すつもりの int」には 1/0 を入れるのが伝統的な書き方です(新しいC言語では <stdbool.h> を使うと booltruefalse という名前も使えますが、内部の仕組みは同じ「0か非0か」です)。

やってみよう

abagemember を変えて、各条件が 1/0 のどちらになるか確かめましょう。

演習

int n = 8; について、n0 より大きく、かつ偶数(n % 2 == 0)かどうかを1つの条件で判定し、結果(1)を表示してください。

ヒント1を見る

printf("%d\n", n > 0 && n % 2 == 0);

実際に動かしてみよう

下のエディタにCを書いて「実行」を押すと、ブラウザ内のインタプリタで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(scanf を使う回は「標準入力」欄に値を入れてから実行します)。

C/C++ — ブラウザ内で実行

ブラウザ内でC/C++を動かす学習用インタプリタ(JSCPP)を読み込みます(入門向けのサブセットです)。
スクロールして表示された時点でも自動で読み込まれます。