はじめに
プログラミングをする際に変数というのは絶対になくてはならない存在です。これをしっかりと覚えることで、これから先の勉強が簡単になるので、是非しっかりと覚えていってください!
初心者向けに、なるべく簡単な内容にしてあるのでさらっと読んでいただければと思います。
また、過去に書いた記事で触れた内容については知っていることを前提に進めていきますので、わからない部分があった場合は過去の記事を読んでいただけると幸いです。
最後に演習問題を作ってあるので、是非解いていってください!
変数って一体何?
まず変数とは一体なんなのかについて説明します。
変数とは何かしらのデータを保存する(記憶する)ことができる箱のことです。
具体的には、
- データは一つしか入らない
- データは何度でも入れ替えることができる
- 演算することができる
といったような特徴を持った箱です。
また、変数は扱えるデータの種類をあらかじめ決める(定義する)必要があり、決めた種類のデータ以外を扱うことはできません。
このデータの種類のことをデータ型といいます。
データ型について
変数の宣言の仕方を覚える前に、まずはデータ型について説明します。
変数の宣言には、データ型を定義する必要があると言いました。
ここではデータ型にどのような種類があり、どのデータがそれに対応するのかということについて述べていきます。
データ型は大まかに整数型、実数型、文字型、論理型があり、扱えるデータが異なります。一つ一つ見ていきましょう。
整数型
文字通り整数を扱うデータ型です。
取り扱えるデータの範囲によって、三つのデータ型が用意されています。
- short型:-32768 ~ 32767
- int型:-2147483648 ~ 2147483647
- long型:-9223372036854775808 ~ 9223372036854775807
一般的にはint型を使うことが多いです。
実数型
実数を扱うデータ型です。
整数型と同じように取り扱えるデータの範囲によって、三つのデータ型が用意されています。
- float型:3.40e-38 〜 3.40e+38
- double型:1.79e-308 〜 1.79e+308
- long double型:1.18e-4932 〜 1.18e+4932
なお、それぞれの型の範囲はおおよその数値です。
文字型
文字を扱うデータ型です。
文字型には「char型」しか存在せず、「a」や「b」等、一文字しか扱うことはできません。
論理型
「true」もしくは「false」という二つの値しか持たないデータ型です。
論理型は「bool型」しか存在しません。
変数を宣言するには
データ型について理解したところで、変数の宣言の仕方について学びましょう!
一般的に変数は次のようにしてデータ型を定義し、変数名を指定して宣言します。
型名 変数名;
同時に同じデータ型の変数を複数宣言したい時には次のようにします。
型名 変数名,変数名,…,変数名;
ただし、C++言語において予め規定されている予約語というものがあり、結果として変数名に使えないものがあります。
また、異なるデータ型の変数であっても同じ変数名を使うことはできません。
以下にサンプルを示します。
#include<iostream> int main(){ int a; //int型の変数aを宣言 bool b,c; //bool型の変数b,cを宣言 return 0; }
変数を使って演算する
変数が宣言できたところで、実際に変数を使って演算してみましょう!
変数を使って演算するには、C++に用意された演算子を使います。
データの代入
データの代入には代入演算子「=」を用いて、次のように書きます。
変数 = データ;
また、次のようにすることで、変数の宣言と共に変数にデータを代入することも可能です。
型名 変数名 = データ;
これを変数の初期化と言います。
以下にサンプルを示します。
#include<iostream> int main(){ int a; //int型の変数aを宣言 char b = 'c'; //char型の変数bを宣言と同時に文字「c」を代入 a = 1; //変数aに1を代入 std::cout << c << '=' << a << std::endl; //変数c,=,変数aの順に出力 return 0; }
変数を標準出力する際は引用符などは必要とせず、そのまま扱うことができます。
また、次のようにすることで同時に複数の変数を宣言と共に初期化できます。
型名 変数名 = データ,変数名 = データ,...,変数名 = データ;
四則演算
例えば四則演算では次のような演算子を使います。
- 「+」:加算
- 「-」:減算
- 「*」:乗算
- 「/」:除算
二つのデータの間に演算子を置くことでデータの演算をすることができます。
例えば二つのデータ(変数)を演算し、結果を出力する際には次のように書きます。
#include<iostream> int main(){ int a; //int型の変数aを宣言 int b = 2; //int型の変数bを宣言すると同時に2を代入 a = 6; //変数aに5を代入 std::cout << a + b << std::endl; //加算 //8 std::cout << a - b << std::endl; //減算 //4 std::cout << a * b << std::endl; //乗算 //12 std::cout << a / b << std::endl; //除算 //3 return 0; }
上記のプログラムでは演算結果を表示するだけでしたが、演算結果を保存したい場合は次のようにすることで、変数に演算結果を代入することができます。
変数 = 演算;
ただし、これは演算結果を保存することができるのであって、演算式を保存することはできません。
根本的には先ほどのデータの代入と同じということです。
そのため演算に変数が含まれている場合には注意が必要です。
以下にサンプルを示します。
#include<iostream> int main(){ int a; //int型の変数aを宣言 int b = 2; //int型の変数bを宣言すると同時に2を代入 a = 6; //変数aに5を代入 int c; //int型の変数cを宣言 c = a + b; //変数cに変数aと変数bの加算結果,8を代入 std::cout << c << std::endl; //8 a = 10; //変数aが変わっても変数cには何の影響も及ぼさない std::cout << c << std::endl; //8 c = a + b; //変数cに変数aと変数bの加算結果,12を代入 std::cout << c << std::endl; //12 return 0; }
また、根本的にはデータの代入であるため、変数の初期化の際に演算結果を代入することも可能です。
以下にサンプルを示します。
#include<iostream> int main(){ int a; //int型の変数aを宣言 int b = 2; //int型の変数bを宣言すると同時に2を代入 a = 6; //変数aに5を代入 int c = a + b; //int型の変数cを宣言すると同時に変数aと変数bの加算結果,8を代入 std::cout << c << std::endl; //8 return 0; }
その他にもたくさんの演算子が存在していますが、詳しくはまた別の記事で解説していきたいと思います。
演習問題
最後に演習問題を使って理解力を高めましょう!
今回は内容が簡単でさっぱりとしていたので、少なめです。
演習問題1
int型変数を二つ定義し、適当な値で初期化する。
それらを加算したものを標準出力せよ。
演習問題2
次のプログラムを実行した時、どのように表示されるか答えよ。
#include<iostream> int main(){ int a = 2,b = 3; int c = a + b; std::cout << c << std::endl; a = b + 1;
std::cout << b << std::endl; c = 2*a; std::cout << c << std::endl; return 0; }
演習問題1解答
これについてはいくつかの解答があると思われるが、解答例として以下のプログラムを用意した。
#include<iostream> int main(){ int a = 2,b = 3; //int型の変数a,bを宣言,初期化 std::cout << a+b << std::endl; //変数aと変数bの加算結果,5 return 0; }
演習問題2解答
次のように表示される。
5
3
8
プログラムにコメントアウトにて説明を入れたものを次に示す。
#include<iostream> int main(){ int a = 2,b = 3; //int型の変数a,bを宣言,初期化 int c; //int型の変数cを宣言
c = a + b; //変数cに変数a(2)に変数b(3)を加算した結果,5を代入 std::cout << c << std::endl; //5 a = b + 1; //変数aに変数b(3)に1を加算した結果,4を代入 std::cout << b << std::endl; //3 c = 2*a; //cに2に変数a(4)を乗算した結果,8を代入 std::cout << c << std::endl; //8 return 0; }
コメント