導入
足す・引く・かける・割るといった計算は、算術演算子で行います。さらに「いまの値をもとに更新する」という場面も多いので、それを短く書ける複合代入演算子もあわせて覚えましょう。
説明
基本の算術演算子は次のとおりです。
#include <stdio.h>
int main(void) {
int a = 7, b = 2;
printf("%d\n", a + b); // 9
printf("%d\n", a - b); // 5
printf("%d\n", a * b); // 14
printf("%d\n", a / b); // 3 ← 整数どうしは小数を切り捨てる!
printf("%d\n", a % b); // 1 ← 余り(剰余)
return 0;
}
ここが重要です。int(整数)どうしの / は、答えの小数部分を切り捨てます。7 / 2 は 3.5 ではなく 3 になります。
flowchart LR
a["7 ÷ 2"] --> b{"両方 int ?"}
b -->|"はい(int / int)"| c["3<br/>(.5 を切り捨て)"]
b -->|"いいえ(double が混ざる)"| d["3.5<br/>(小数のまま)"]
%(剰余)は「割った余り」です。偶数・奇数の判定などによく使います。
次に、変数の値を更新する場面を見てみましょう。「いまの値に足す」は x = x + 3; と書けますが、x += 3; と短くできます。これを複合代入演算子と呼びます。
#include <stdio.h>
int main(void) {
int x = 10;
x += 5; // x = x + 5 と同じ → 15
x -= 3; // 12
x *= 2; // 24
x /= 4; // 6
printf("%d\n", x); // 6
return 0;
}
1だけ増やす・減らすには ++ と --(インクリメント/デクリメント)が使えます。この後の章で学ぶループでよく登場します。
#include <stdio.h>
int main(void) {
int count = 0;
count++; // 1
count++; // 2
count--; // 1
printf("%d\n", count); // 1
return 0;
}
やってみよう
a と b の値、x の初期値や複合代入の演算を変えて、それぞれの結果を確かめましょう。int の割り算が切り捨てになること、% が余りを表すことに注目してください。
演習
int 変数 total に 17、people に 5 を入れ、total / people(1人あたり、切り捨て)と total % people(余り)を両方表示してください(3 と 2)。
ヒント1を見る
printf("%d\n", total / people); と printf("%d\n", total % people); を並べます。