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型 )に変えられたからだそうだ。