Skip to content
On this page

2.2. int 変数

cpp
#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

intinteger (=整数) の略。

coutx と書くと、x中身が出力される。"" をつける意味がわかっただろうか。

DANGER

同じ名前の変数を2回定義する事はできない

例えば、

cpp
int x = 4;
int x = 3;

などと書くとコンパイルエラーとなる。 途中で値を変えたい場合は、次のように記す。

cpp
int x = 4;
x = 3;

本当に値が途中で変わっているか気になる場合は、1行目と2行目の間に cout 命令を挟んでxの値を確認してみると良いだろう。

cpp
int x = 4;
cout << x << endl;
x = 3;
cout << x << endl;

DANGER

C++では、「型」が異なる値と変数について一部の場合を除き、値をそのまま変数に代入することはできない。例えば、int型の変数に文字列(=string型とよばれている)を入れるような命令はエラーとなる。

2.2.1. int型 の計算

パソコンは計算機なので、当然計算ができる。

cpp
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章で扱う。

また、値を代入することもできる。

cpp
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に代入される。

cpp
int x = 4;
x += 7;
cout << x << endl;
[output]
11

他にも -=, *=, /=, %= が使える。

2.2.2. オーバーフロー

オタクというのはでかい数字が大好きなので、

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