本文へスキップ
BecomeCoder

C言語コース · 第2章 演算子 · レッスン5

算術演算子と代入・複合演算子

ブラウザで完結

導入

足す・引く・かける・割るといった計算は、算術演算子で行います。さらに「いまの値をもとに更新する」という場面も多いので、それを短く書ける複合代入演算子もあわせて覚えましょう。

説明

基本の算術演算子は次のとおりです。

#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 / 23.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;
}

やってみよう

ab の値、x の初期値や複合代入の演算を変えて、それぞれの結果を確かめましょう。int の割り算が切り捨てになること、% が余りを表すことに注目してください。

演習

int 変数 total17people5 を入れ、total / people(1人あたり、切り捨て)と total % people(余り)を両方表示してください(32)。

ヒント1を見る

printf("%d\n", total / people);printf("%d\n", total % people); を並べます。

実際に動かしてみよう

下のエディタにCを書いて「実行」を押すと、ブラウザ内のインタプリタで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(scanf を使う回は「標準入力」欄に値を入れてから実行します)。

C/C++ — ブラウザ内で実行

ブラウザ内でC/C++を動かす学習用インタプリタ(JSCPP)を読み込みます(入門向けのサブセットです)。
スクロールして表示された時点でも自動で読み込まれます。