導入
「等しいか」「大きいか」を調べる比較演算子と、それらを組み合わせる論理演算子は、この後の章で学ぶ条件分岐の土台になります。
説明
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> を使うと bool・true・false という名前も使えますが、内部の仕組みは同じ「0か非0か」です)。
やってみよう
a・b・age・member を変えて、各条件が 1/0 のどちらになるか確かめましょう。
演習
int n = 8; について、n が 0 より大きく、かつ偶数(n % 2 == 0)かどうかを1つの条件で判定し、結果(1)を表示してください。
ヒント1を見る
printf("%d\n", n > 0 && n % 2 == 0);。