四則演算・剰余・演算の優先順位を学ぶ。
特に整数の割り算と剰余は C言語特有の挙動があるため注意。
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
+ | 加算 | 15 + 4 | 19 |
- | 減算 | 15 - 4 | 11 |
* | 乗算 | 15 * 4 | 60 |
/ | 除算 | 15 / 4 | 3 ※小数切り捨て |
% | 剰余(余り) | 15 % 4 | 3 |
/ は小数点以下を切り捨てる。7 / 2 は 3.5 ではなく 3 になる。これは頻出バグの原因。float や double を使うか、キャストが必要(後の章で学ぶ)。
#include <stdio.h>
int main(void)
{
int a = 15;
int b = 4;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b); // 小数切り捨て
printf("a %% b = %d\n", a % b); // %% で % を表示
return 0;
}
実行結果:
a + b = 19 a - b = 11 a * b = 60 a / b = 3 a % b = 3
printf の中で % を文字として表示したいときは %% と書く。% 単体では書式指定子の開始として解釈されてしまう。
%)の使い道剰余は「割った余り」を返す演算子で、実際のプログラムでよく使う。
| 用途 | コード例 | 判定 |
|---|---|---|
| 偶数・奇数の判定 | n % 2 == 0 | 0 なら偶数、1 なら奇数 |
| 3の倍数か判定 | n % 3 == 0 | 0 なら 3 の倍数 |
| 循環するインデックス | i % 配列サイズ | 範囲を超えたら最初に戻る |
複数の演算子が混在するとき、計算される順序に規則がある。
| 優先度 | 演算子 | 説明 |
|---|---|---|
| 高 | () | カッコの中を先に計算 |
| ↑ | * / % | 乗算・除算・剰余 |
| ↓ | + - | 加算・減算 |
| 低 | = | 代入(最後に行われる) |
int a = 2 + 3 * 4; // 3*4=12 → 2+12=14
int b = (2 + 3) * 4; // 2+3=5 → 5*4=20
2 + 3 * 4 = 14 (2 + 3) * 4 = 20
Q1. int x = 7 / 2; の結果はどれか。
ア. 3
イ. 3.5
ウ. 4
エ. コンパイルエラー
正解:ア
整数型同士の割り算は小数点以下を切り捨てた整数になる。
7 / 2 = 3.5 → 切り捨てて 3。
Q2. 10 % 3 の結果はどれか。
ア. 1
イ. 3
ウ. 0
エ. 3.33
正解:ア
10 ÷ 3 = 3 余り 1 なので、剰余は 1。
Q3. 次の式の計算結果はどれか。
int result = 1 + 2 * 3 - 4 / 2;
ア. 3
イ. 5
ウ. 7
エ. 4
正解:イ
優先順位に従い乗除を先に計算する。
2 * 3 = 6、4 / 2 = 2 → 1 + 6 - 2 = 5
Q4. printf の中で % を文字として出力するにはどう書くか。
ア. \%
イ. %%
ウ. /%
エ. &%
正解:イ
printf では % が書式指定子の開始文字として使われるため、
文字としての % を出力したいときは %% と書く。
| ポイント | 内容 |
|---|---|
| 算術演算子 | + - * / % の 5 種類 |
| 整数の割り算 | 小数点以下は切り捨て。7 / 2 = 3 |
| 剰余 | 余りを返す。偶奇判定などに活用 |
| 優先順位 | * / % → + - の順。迷ったら () で明示 |
%% | printf 内で % 文字を出力するときの書き方 |