C初級:変数について

C言語初級カテゴリのロゴ画像 C言語初級

サンプルプログラム 04variable.c

/* 04variable.c 変数 */
#include <stdio.h>
int main(void)
{
	int age;
	
	age = 1000;
	printf("わたしは、%d年前からこの世に存在しています。\n", age);
	printf("今までに%d回腹筋をしました。\n", age);
	
	return 0;
}

変数はプログラミングで避けては通れない考え方です。
変数は「へんすう」と呼びます。実は中学校のときにすでに学んだ考え方でもあります。

2x + 3 = 9

のような方程式を習った記憶があると思います。
答えは x = 3 です。
ちなみに方程式の解き方はこの場合関係ありません。(数学嫌いなあなた!良かったですね)

xの部分に何かの数値が入るという考え方が変数の考えかたです。
この場合のxは入れ物(数値が入る入れ物)の役割を持ちます。
変数も同じです。

変数の名前は、xでもyでもいいのですが、その中に数値が入るという考え方が変数のポイントです。
なぜ変数という呼び方をするのか?
中身が変化するからです。

上記の方程式ではxの値は決定してしまいますが変数は違います。
どんな数値でも入れることが出来ます。
この数値を変数に入れることを「代入」(だいにゅう)と呼んでいます。

xに10を代入する場合の記述はこうです。

x = 10;

xに20を代入する場合はこうなります。

x = 20;

2つ続けて書くと

x = 10;
x = 20;

となりますが、この場合は後で行ったx = 20;だけが有効になります。
つまり変数のルールは、値を入れることが出来るが1度に1つだけしか入れることが出来ないということです。
上記の場合であれば、最初に10をいれた後に20を入れたので、最初の10が消えてしまった状態です。

この1度に1つしか入れることが出来ないというルールは不便なようですが、実はプログラミングにとって柔軟かつ自由度が高いルールであると言えます。
この記事は初級ということなので、いづれ上級になる皆さんに対して言うなら、まず変数の扱いを覚えたらプログラミングの階段を一段上がった状態になれるよ、と言うことです。
ぜひ変数をマスターしましょう。

前置きが長すぎましたが、変数の使い方です。

サンプルプログラムでは、最初に

int age;

としています。
これは「整数型の変数ageを宣言します」という意味になります。
intはintegerの略で、整数を意味します。
変数ageを使いたいのであれば、最初に変数ageの宣言をしなければなりません。
いきなりx = 10;とは出来ません。

そういう意味ではPythonなどの言語はいきなりx = 10などと出来て気楽なプログラミング言語だと思います。
まあ、この辺りの考え方としては「C言語は厳密に変数宣言しないと使えないから設計する上でいいのだ」と言う人もいて様々です。

話がそれました。

前回の四則演算の回でも書きましたが、C言語には整数型と実数型という型が存在します。

変数にも整数型と実数型があります。
整数型で宣言した変数には整数しか代入できません。実数型で宣言した場合は当然実数しか代入できないことになります。

C言語に存在する変数型はこちらのC言語変数型一覧を参考にしてください。

プログラムの解説のつづきです。

age = 1000;

で変数ageに1000という整数を代入しています。
次にprintf関数で変数ageの内容を画面に表示しています。
printfの%dの位置に,より後で指定した変数(この場合age)の内容が表示されるので、画面には

わたしは、1000年前からこの世に存在しています。

と表示されます。
次の行もやっている事は基本的に前の行と同じです。
変数ageの内容を%dの位置に表示します。従って

今までに1000回腹筋をしました。

という変な日本語が画面に表示されることでしょう。

上記サンプルではピンと来ない方もいると思います。
もう一つ例を示します。

次の例は変数同士の演算です。

サンプルプログラム 04variable2.c

/* 04variable2.c 変数同士の演算 */
#include <stdio.h>
int main(void)
{
	int x, y, z;
	
	x = 24;
	y = 60;
	z = 60;

	printf("1日は%d秒です\n", x * y * z);
	
	return 0;
}

3つの変数x, y, zを宣言しています。
カンマで区切ると複数の変数が宣言できます。

1つ1つの変数を

int x;
int y;
int z;

と宣言しても意味は同じです。

x, y, zにそれぞれ24, 60, 60を代入しています。
printf関数の部分でx * y * zの演算をしています。
コンピュータはx, y, zそれぞれ変数の内容に置き換えて計算を行います。

つまり

24 * 60 * 60

を計算するので

1日は86400秒です

と表示することになります。

変数同士は代入することも出来ます。

サンプルプログラム 04variable3.c

/* 04variable3.c 変数同士の代入 */
#include <stdio.h>
int main(void)
{
	int x, y, z;
	int sec;

	x = 24;
	y = 60;
	z = y;

	sec = x * y * z;

	printf("1日は%d秒です\n", sec);
	
	return 0;
}

先ほどのサンプルで宣言した変数x, y, zに加えて変数secを宣言しています。
z = y;の部分は、yの中身がzに代入されることになります。
すなわちzには60が代入されます。

sec = x * y * z;

の部分であらかじめ計算した結果を変数secに代入しておきます。
最後にsecの内容をprintf関数で表示しています。

表示結果は

1日は86400秒です

となり先ほどのサンプルと同じ表示となります。

コメント

タイトルとURLをコピーしました