このページの解説は C99 をベースとしています。
以下は目次です。
ある数値が、ある範囲内に収まっているかどうかを調べたいとします。
といったことです。結果は、真か偽のいずれかです。
if文を使って判定すればいいだけのことですが、数学でやるように -5 <= x <= 5
のような式は正しく動作しないことに注意しなければなりません。
#include <stdio.h>
int main(void)
{
int x = 10;
// 間違った方法
if (-5 <= x <= 5) {
("true");
puts}
else {
("false");
puts}
}
実行結果:
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) {
("true");
puts}
else {
("false");
puts}
}
実行結果:
false
正しい結果が得られました。
return 0;
を削除(C言語編全体でのコードの統一)
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |