このページの解説は C99 をベースとしています。
以下は目次です。
ある数値が、ある範囲内に収まっているかどうかを調べたいとします。
といったことです。結果は、真か偽のいずれかです。
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
正しい結果が得られました。
return 0; を削除(C言語編全体でのコードの統一)
Programming Place Plus のトップページへ
| はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
| X で ポスト/フォロー | LINE で送る | noteで書く |
|
|
管理者情報 | プライバシーポリシー |