プログラムを書くための小道具(1)


状態を記録する

プログラムを書いていると、様々な値(データ)を保持し、あとから使いたくなることに出くわす。 このような目的のために、データに固有の名前をつけたものを変数と呼ぶ。

変数に対する操作としては、次の3種類がある。


変数の型

C 言語では、データは表現できる内容に応じた「型」を持つ。 型は、実数(浮動小数点)、整数という区別だけではなく、 実数、整数の中でも表すことのできる範囲に応じた複数種類のものがある。

「整数型」の変数に実数を代入すると小数点以下が0にむかって省略される。

/* test_int.c */
#include <stdio.h>

int main()
{
	/* 整数型変数に実数を代入してみる */

	int i;

	/* 正の数の場合は切り捨て */
	i = 1.5;
	printf("i =  1.5 ===> %+d\n", i);

	/* 負の数の場合も確かめてみる */
	i = -1.5;
	printf("i = -1.5 ===> %+d\n", i);
}

整数型変数

「整数」を表すための型として次のものが用意されている。

型名 データサイズ(バイト) 表現できる値の範囲
符合付 符合無
char 1 -128 〜 127 0 〜 255
short 2 -32768 〜 32767 0 〜 65535
int 2 または 4 (※1) -32768 〜 32767 または 0 〜 65535 または
-2147483648 〜 2147483647 0 〜 4294967295
long 4 (※2) -2147483648 〜 2147483647 0 〜 4294967295

実数型

実数(浮動小数点)を表現する変数には次のものが用意されている。 実数型の変数に整数を代入すると、少数点以下が 0 となる(当たり前..)。

型名 データサイズ(バイト) 表現できる値の範囲 おおよその有効桁数
float 4 -3.4×1038〜3.4×1038 10進数で7桁程度
double 8 -3.4×10308〜3.4×10308 10進数で14桁程度

実数型には、符合無の型はなく、必ず符合付きである。


「1バイト」とは「8ビット」で、28 = 256通りのものを表すことができる情報量である。

コンピュータ内部では、メモリ空間 1バイトずつにアドレス(address, 番地)がつけられている。 そのメモリ空間上に、ある特定の領域を取って、変数として利用される。 & 演算子を用いると、変数のメモリ上の位置を求める事ができる。 printf 関数で、アドレスを表記するための書式指定子には %p を用いる。

また、演算子 sizeof を変数に対して用いると、その変数の占める領域の大きさをバイト単位で求めることができる。

プログラムの実行時に、例えば上のようなメモリ配置になっていた瞬間に

int main() {
   int i;
   char a[6];

   i = 1;
   printf("&i    = %p  sizeof(i) = %d\n", &i, sizeof(i));
   printf("&a    = %p  sizeof(a) = %d\n", &a, sizeof(a));
   printf("&a[3] = %p  sizeof(a[3]) = %d\n", &a[3], sizeof(a[3]));

}

というプログラムを実行すると

~% ./a.out
&i    = 0x52f4  sizeof(i) = 4
&a    = 0x52fa  sizeof(a) = 6
&a[3] = 0x52fd  sizeof(a[3]) = 1
~%

という出力を得る。


ポインタ変数

メモリ上のアドレスを表現するポインタを格納できる 変数である。上に出てきたすべての型に対するポインタ変数が存在する。


戻る
表紙


tacha@tack.fukui-med.ac.jp
$Id: variable.html,v 1.1 2007/10/25 15:10:55 tacha Exp tacha $