2.2. int 変数
#include <iostream>
using namespace std;
int main() {
int x = 4;
cout << "x" << endl;
cout << x << endl;
}
int x = 4
で変数を定義し、代入をしている。変数を簡単に説明すると、「決められた情報を持つ入れ物」である。
x
は変数の名前である。一般的にアルファベットで開発者(=あなた)が決める。1文字でなくても良い。(number
等)int
はこの変数が「整数」を入れるための、int
型の入れ物であることを意味する。= 4
は見た通りで、変数の中身(=値)を4
にするという意味である。
TIP
int
は integer (=整数) の略。
cout
に x
と書くと、x
の中身が出力される。""
をつける意味がわかっただろうか。
DANGER
同じ名前の変数を2回定義する事はできない。
例えば、
int x = 4;
int x = 3;
などと書くとコンパイルエラーとなる。 途中で値を変えたい場合は、次のように記す。
int x = 4;
x = 3;
本当に値が途中で変わっているか気になる場合は、1行目と2行目の間に cout
命令を挟んでx
の値を確認してみると良いだろう。
int x = 4;
cout << x << endl;
x = 3;
cout << x << endl;
DANGER
C++
では、「型」が異なる値と変数について一部の場合を除き、値をそのまま変数に代入することはできない。例えば、int
型の変数に文字列(=string
型とよばれている)を入れるような命令はエラーとなる。
2.2.1. int型 の計算
パソコンは計算機なので、当然計算ができる。
int x = 11;
int y = 7;
cout << x + y << endl;
cout << x - y << endl;
cout << x * y << endl;
cout << x / y << endl;
cout << x % y << endl;
と書けば、
18
4
77
1
4
と出力される。上から順に
- 和
+
- 差
-
- 積
*
- 商
/
- 剰余(mod)
%
である。 +
, -
, *
, /
, %
等のような記号を 演算子 と呼ぶ。
ここで、int
型同士の割り算について、結果はint
型となる。(文字通り「商」を取る) 小数は第3章で扱う。
また、値を代入することもできる。
int x = 4;
int y = 7;
int f = x + y;
cout << f << endl;
f = x - y;
cout << f << endl;
[output]
11
-3
数学の とは異なり、これは「右辺の値を左辺に代入する」操作を意味する。
計算の中でも特に、x = x + 4
等、「加算」したい時は、x += 4
等と略記することができる。
TIP
代入演算子 =
は演算子の右辺を計算して、その結果を左辺の変数に代入する演算子である。
例えば x = x + 4
という命令では x + 4
が計算され、その結果がx
に代入される。
int x = 4;
x += 7;
cout << x << endl;
[output]
11
他にも -=
, *=
, /=
, %=
が使える。
2.2.2. オーバーフロー
オタクというのはでかい数字が大好きなので、
int yen = 5000000000000000;
cout << yen << endl;
と書く。しかし、これを実行すると 937459712
が出力される。
これは、オーバーフローというものが起きるからである。int
型が扱える数値には上限があって(同時に下限もある)、それを超える数を扱う事はできない。扱おうとする時に発生する問題を「オーバーフロー」と呼ぶのである。
int
型が扱える数の範囲は -2,147,483,648
~ 2,147,483,647
である。基本的に気にすることはないが、起きた時はオーバーフローを疑うと良いだろう。
ちなみに、実行すると出力される値は、数値の最上位の桁をコンピューターが無視するために、上限値を超えた際に値が下限値に戻るからである。
TIP
オーバーフローに関連して、ゲーム「パズル&ドラゴンズ」において 2021 年まで各キャラクターが出せる最大ダメージは2,147,483,647ダメージであったという話がある。これはゲームが int
型を用いていたためについていた制限である。 なお、2021年のアップデートでダメージ上限が変更された。これはより大きい整数を扱える型 (C++ で言うところの long long
型 )に変えられたからだそうだ。