論理演算子 パート2
CoddyのCジャーニー「Fundamentals」セクションの一部 — レッスン 22/63。
論理演算子には、論理演算子の組み合わせが何を返すかを示す「真理値表」と呼ばれる特別な表があります。
and (&&) 演算子の真理値表:
| a | b | a && b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
and (&&) 演算子で 1 (真) を得る唯一の方法は、a と b の両方が 1 (真) である場合です。
or (||) 演算子の真理値表:
| a | b | a || b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
この場合、1 (true) という結果を得るには、a または b のいずれかが 1 (true) である必要があります。
not (!) 演算子の真理値表:
| a | !a |
|---|---|
| 0 | 1 |
| 1 | 0 |
ここで、a の値が反転されます。もし a が 0 (偽) であれば、!a は 1 (真) になります。
チャレンジ
簡単式 int b3 = !((b1 + b2) > (b1 * b2)); において、b3 が 1 (true) と評価されるように、変数 b1 と b2 に整数値を代入する必要があります。
条件を分析し、どのような値がそれを真にするか考えてみてください。
チートシート
真理値表は、論理演算子の結果を示します:
AND (&&) 演算子:
| a | b | a && b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
両方のオペランドが 1 (true) の場合にのみ 1 (true) を返します。
OR (||) 演算子:
| a | b | a || b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
いずれかのオペランドが 1 (true) の場合に 1 (true) を返します。
NOT (!) 演算子:
| a | !a |
|---|---|
| 0 | 1 |
| 1 | 0 |
値を反転させます:0 (false) は 1 (true) になり、その逆も同様です。
自分で試してみよう
#include <stdio.h>
int main() {
// 以下にコードを入力してください
int b1 = ?;
int b2 = ?;
int b3 = !((b1 + b2) > (b1 * b2));
// 下の行は変更しないでください
printf("b3 = %d\n", b3);
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。