talosのプログラミング教室

はじめてのC++ ~代入と計算編~

スポンサーリンク

f:id:talosta:20200411173631p:plain


今回はC++で代入の仕方と計算方法を学んでいきます。

基礎中の基礎なのでしっかり抑えましょう。

基本

#include <iostream>

int main() {
    // 宣言
    int x;
    int y;
    int z;

    // 代入
    x = 5;
    y = 3;

    // 計算
    z = x + y;

    std::cout << z << "\n";
    return 0;
}
8

初めに

int x;
int y;
int z;

と書きました。

これは宣言と呼ばれ、「このような変数を使うよ」ってコンパイラに教えてあげます。

これがないとエラーが出ます。

まとめて以下のように書くこともできます。

int x, y, z;

intというのは32ビット符号付整数型のことです。

他にも様々な「型」があります。

よく使うものとしては、double型(浮動小数点型)、char型(文字型)、std::string型(文字列型)、bool型(ブーリアン型:trueかfalseの2値)などがあります。

x = 5;
y = 3;

は代入を表しています。

宣言と同時に、以下のように代入することもできます。

int x = 5;

また、他の変数を介して、以下のように代入することもできます。

int a = 5;
int x = a;  // x = 5


次に、

z = x + y;

は見ての通り足し算です。

以下のように、変数と数値を計算することもできます。

z = x + 3;

引き算は「-」、掛け算は「*」、割り算は「/」でできます。

また、割り算の剰余は「%」で求められます。

// 引き算
z = 5 - 3;  // z = 2

// 掛け算
z = 5 * 3;  // z = 15

// 割り算
z = 5 / 3;  // z = 1 (int型同士の割り算では小数点以下切り捨て)

// 剰余
z = 5 % 3;  // z = 2


ちなみに「//」はコメントアウトと呼ばれ、「//」以降に書かれた文字は読み飛ばされます。

「//」は1行のコメントを書くことができ、「/* */」の間には複数行のコメントを書けます。

特殊な代入と計算

#include <iostream>

int main() {
    int a, b, c, d, e;
    
    a = b = c = d = e = 4;

    a = a + 2;
    std::cout << "a=" << a << "\n";

    b += 2;
    std::cout << "b=" << b << "\n";

    c -= 2;
    std::cout << "c=" << c << "\n";

    d *= 2;
    std::cout << "d=" << d << "\n";

    e /= 2;
    std::cout << "e=" << e << "\n";

    return 0;
}
a=6
b=6
c=2
d=8
e=2

まず、

a = b = c = d = e = 4;

に注目してください。

これは

e = 4
d = e;
c = d;
b = c;
a = b;

と書くのと同じです。

つまり、すべての変数に4が入っています。


次に、

a = a + 2;

を見てみましょう。

これは元々変数aに入っている数値に2を足して、その結果を変数aに格納することを表しています。

したがって、最終的には変数aに6が入ります。

b += 2;

b = b + 2;

と同じです。

同様に、

c -= 2;

c = c - 2;

と、

d *= 2;

d = d * 2;

と、

e /= 2;

e = e / 2;

と同じです。

インクリメントとデクリメント

インクリメントは変数の値を1増加させ、デクリメントは変数の値を1減少させることを言います。

C++ではこれらを短く書くことができます。

#include <iostream>

int main() {
    int a, b, c, d;

    a = b = c = d = 1;

    //  インクリメント
    a++;
    ++b;
    std::cout << "a=" << a << " b=" << b << "\n";

    // デクリメント
    c--;
    --d;
    std::cout << "c=" << c << " d=" << d << "\n";

    return 0;
}
a=2 b=2
c=0 d=0

実はインクリメント演算子(++)やデクリメント演算子(--)が変数の前に来るのと後に来るのでは、微妙に処理が異なります。

#include <iostream>

int main() {
    int a, b;

    a = b = 1;

    std::cout << a++ << "\n" << ++b << "\n";

    return 0;
}
1
2

実行結果を見てわかる通り、演算子が前に来る場合は+1された結果が表示されていますが、後に来る場合は+1されずに表示されています。

これは、演算子が前に来ると文の実行前に+1され、後に来る場合は文が実行された後に+1されるからです。

最後にもう一度aを出力してみると、+1して表示されます。

おわりに

今回はC++で代入と計算を行いました。

次回は制御文について説明します。