数値が範囲内に収まっているか調べる | Programming Place Plus C言語編 逆引き

トップページC言語編逆引き

このページの概要

以下は目次です。

目的

ある数値が、ある範囲内に収まっているかどうかを調べたいとします。

といったことです。結果は、真か偽のいずれかです。

方法①(論理積演算子を使う)

if文を使って判定すればいいだけのことですが、数学でやるように -5 <= x <= 5 のような式は正しく動作しないことに注意しなければなりません。

#include <stdio.h>

int main(void)
{
    int x = 10;

    // 間違った方法
    if (-5 <= x <= 5) {
        puts("true");
    }
    else {
        puts("false");
    }
}

実行結果:

true

10 は -5~5 の範囲内にはありませんから、結果は false になることを期待しますが、出力結果は true になりました。

C言語では、-5 <= x <= 5 という式は (-5 <= x) <= 5 のように扱われてしまいます。そのためまず -5 <= x が判定されます。x が 10 ならこの判定は真なので、結果は 1 です。その後、1 <= 5 が判定されて、これも真になるので、結果は 1 となります。よって、-5 <= x <= 5 は全体として 1(真)です。

正しく判定するには、論理積演算子(第15章)を使って、-5 <= x && x <= 5 といったように、下限値と上限値の判定を分けて行うようにします。

#include <stdio.h>

int main(void)
{
    int x = 10;

    if (-5 <= x && x <= 5) {
        puts("true");
    }
    else {
        puts("false");
    }
}

実行結果:

false

正しい結果が得られました。


参考リンク


更新履歴



逆引きのトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る