はじめてのC++ ~代入と計算編~
スポンサーリンク
今回は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して表示されます。