ベイジアン研究所

技術(人工知能、数学等)と心理の話をしています。

【C言語入門】変数編

1. 変数とは
数学において変数を使って方程式の解を求めるように、プログラミングにおいても変数を用いる。しかしその意味は数学のものとは少し異なる。

プログラミングにおいて、「変数」とは、数値や文字を格納する箱のことである。箱の名前と、中にどのようなデータを入れられるか(整数なのか、実数なのかなど)を宣言する。

int n;

「int」が、箱に入れることのデータ形式を表し(この場合は整数)、「n」が変数名を表す。

他にも、例えば

double a;

で、実数型などを宣言する事ができる。

intで宣言したときの変数に実数を代入すると、小数点以下が切り捨てられる。

変数に対して、「2」などのプログラミングに埋め込まれている値のことを定数という。

2. 代入と初期化 プログラミングにおいて次の等式を書く事がある。

x = 2;

数学では、変数xに2を代入すると言う意味だが、プログラミングにおいては意味合いが少し変わる。

プログラミングでは、「右辺の値を左辺の値に代入する」と言う意味である。この意味では例えば、次の等式が有効になる。

x = 2;
x = x + 1;

上の式は数学では0=1となり、意味を持たないが、プログラミングにおいては次のような意味になる。 1. 変数xに2を代入する。 2. 式「x = x+1」の右辺のxに2を代入する。つまり右辺=2+1=3。 3. 変数xにx+1=3を代入する つまり最終的にxの値は3となる。

変数の宣言と同時に、値を代入することをできる。例えば

int x = 2;

とすると、宣言と同時にxに2が代入される。この時の「=」を初期化と言う。

変数を宣言しただけの時は、適当な値で初期化される。(プログラムの結果が想定した場合と異なる時は、初期化忘れをしている事が多い。エディタによっては警告が出る場合があるのでそれを参考にすると良い。)

3. キーボードからの読み込み
ユーザーにキーボードから値を読み込ませて、その値を元に計算をするプログラムを作成する事ができる。この時使うコードが、「scanf」である。(大規模なプログラムになるほど、コマンドライン引数と言うものがよく使われるので、実務ではあまり使われないのが事実。)

scanf("%d", &no);

これは、ユーザーに整数を入力するように求めて、入力された値を「no」に代入すると言う意味である。

printfとは異なり、「&」を付けなければならない事に注意。(この&は、「ポインタ」と言う概念と深く関わっている。今は気にしなくても良い。後の記事を参照。)

例えば、次のようなプログラムを書く事ができる。

#include <stdio.h>

int main(void)
{
int no;

printf("正の整数を入力してください。");
scanf("%d", &no);

no = no + 5;
print("%d", no);

return 0;
}

このコードはユーザーに整数の入力を求めて、その値に5を加えて画面に表示をすると言うプログラムである。