次のプログラムをダウンロードして実行してみよ
int_div.c。
int型の値同士の演算のため、代入する左辺値がdoubleでも演算結果は期待通りにならない。
通常 C で論理式を表す場合、int型で1を真、
0を偽として扱う。(0 でなければ真として扱われる。)
論理積「かつ」(&&)、論理和「または」(||)、否定「〜でない」(!)の演算子を論理演算子という。論理積と論理和演算子は 2 項演算子であり、否定演算子は単項演算子である。
| 表記 | 名称 | 意味 |
|---|---|---|
&& | AND演算子 | 論理積 |
|| | OR演算子 | 論理和 |
! | 否定演算子 | 否定 |
truth-table.cexer4-12.cexer4-13.cexer4-14.cexer4-15.c
関係演算子には、>, <, >=, <= があり、等価演算子には==, != がある。
test-bool.cexer4-17.cexer4-18.c算術演算と代入演算を合わせて行う複合代入演算子には以下のものがある。
| C の式中の表記 | 複合代入 | 単純代入 |
|---|---|---|
+= | E1 += E2 | E1 = E1 + E2 |
-= | E1 -= E2 | E1 = E1 - E2 |
*= | E1 *= E2 | E1 = E1 * E2 |
/= | E1 /= E2 | E1 = E1 / E2 |
%= | E1 %= E2 | E1 = E1 % E2 |
<<= | E1 <<= E2 | E1 = E1 << E2 |
>>= | E1 >>= E2 | E1 = E1 >> E2 |
E1 = E1 + E2の意味は、E1+E2の演算結果を新たにE1に代入するという意味である。複合代入演算子はその省略形である。
<< と >> とはシフト演算子と呼ばれるもので、E1 の値を右あるいは左にシフト(ずらす)操作を意味する。シフト演算子の結果は、次のサンプルコードshift.c で確認できる。
char型及びint型の変数に 1 だけ増分させたり、減じたりする場合
i = i + 1;
や
i += 1;
と書く代わりに、
i++;
あるいは
++i;
と書くことができる。前置演算子(++i)と後置演算子(i++)との違いは、前置演算子が増分してから式を評価するのに対して、後置演算子は式を評価した後に増分されることが異なる。前置演算子と後置演算子の違いは、例 4.10 increment.cでわかる。