C言語の比較演算子(==, !=, <, >)と論理演算子(&&, ||, !)を解説。
| 演算子 | 意味 | a=3, b=5 の結果 |
|---|---|---|
a == b | 等しい | 0 (偽) |
a != b | 等しくない | 1 (真) |
a > b | 大きい | 0 (偽) |
a >= b | 以上 | 0 (偽) |
a < b | 小さい | 1 (真) |
a <= b | 以下 | 1 (真) |
| 演算子 | 意味 | 読み方 | 例 |
|---|---|---|---|
A && B | AかつB (両方真) | かつ/AND | age >= 18 && age < 65 |
A || B | AまたはB (どちらか真) | または/OR | day == 0 || day == 6 |
!A | Aでない | 否定/NOT | !finished |
| A | B | A && B |
|---|---|---|
| 真 | 真 | 真 |
| 真 | 偽 | 偽 |
| 偽 | 真 | 偽 |
| 偽 | 偽 | 偽 |
| A | B | A || B |
|---|---|---|
| 真 | 真 | 真 |
| 真 | 偽 | 真 |
| 偽 | 真 | 真 |
| 偽 | 偽 | 偽 |
== と = の違い ― 超重要!if (a = 10) と書いてしまう(==のつもり)。これは「aに10を代入してからその値(10)を条件として使う」となり、常に真になってしまいます。// ✘ バグの例 if (a = 10) { // = は代入! aは10になり、条件は常に真 printf("いつも実行される\n"); } // ✔ 正しい書き方 if (a == 10) { // == は比較。aが10のときだけ真 printf("aは10です\n"); }
== は「等しいかチェック」、= は「入れる」。条件 ? 真のときの値 : 偽のときの値// if-else で書く場合 int max; if (a > b) { max = a; } else { max = b; } // 三項演算子で1行 int max = (a > b) ? a : b;
| 用途 | コード例 | 意味 |
|---|---|---|
| 2値の大きい方 | (a > b) ? a : b | a が大きければ a、そうでなければ b |
| 絶対値 | (x >= 0) ? x : -x | x が正ならそのまま、負なら符号反転 |
| 偶数/奇数の表示 | (n%2==0) ? "偶数" : "奇数" | printfの引数に直接使える |
| 0除算の防止 | (b != 0) ? a/b : 0 | bが0でなければ割り算、0なら0 |
(a>b) ? ((a>c)?a:c) : ((b>c)?b:c) のような入れ子は読みにくいので、if-else で書きましょう。この講座の理解度をチェックしましょう!
= は代入演算子、== が比較(等価)演算子です。=== はC言語には存在しません(JavaScriptの演算子です)。
1 && 0 = 0(偽)、その否定 !0 = 1(真)です。
5 > 3 は真(1)、2 > 4 は偽(0)。&& は両方真の時だけ真なので、1 && 0 = 0(偽)です。