2 変数と型

2.1 変数とはなにか

コンピューターはデータを猛烈な速度で処理する.この処理を行うためには,計算をする こととデータを記憶することが必要となる.データはコンピューターのメモリーに記憶さ れる.メモリーの場所に名前をつけることにより,目的のデータにアクセスする.その名 前が変数名である.ようするに,変数とはメモリーの一部である.

2.2 変数の型

コンピューターが取り扱う代表的なデータに,文字と整数,実数がある.これの他にもデー タがあるが,まだ,諸君が学習するには難しすぎる.後期の授業で説明するので楽しみに しておいてください.データには,種類があることを理解しなくてはならない.

データの種類によって,記憶する方法や必要なメモリーの大きさが異なる.そのため,デー タには型を決めなくてはならない.その型には文字型や整数型,実数型がある.それぞれ は,表2のようにさらに細かく分類できる.取り扱うデータに よって,最適な型を選択する必要がある.

いろいろな型があるが,諸君が使うのは以下の3つである.本講義では,これ以外の型を 使うことはないだろう.まず,この3つの使い方に慣れよ.

複数の文字からなる文字列やもう少し便利な型は,後期の講義で学習する.

2を見て分かるように,文字型の範囲は整数となっている. これは,文字を整数で表しているためである.教科書p.374の付録1 ANSI(ASCII)コード表 に文字と整数の対応が書かれている.

表 2: 変数の型と情報料
型名 データ型 ビット数 範囲
文字型 char 8 -128〜127
  singed char 8 -128〜127
  unsinged char 8 0〜255
整数型 short int 16 -32768〜32767
  signed short int 16 -32768〜32767
  unsigned short int 16 0〜65535
  int 32 -2147483648〜2147483647
  signed int 32 -2147483648〜2147483647
  unsigned int 32 0〜4294967295
  logn int 32 -2147483648〜2147483647
  singed long int 32 -2147483648〜2147483647
  unsigned long int 32 0〜4294967295
実数型 float 32 正負とも約$ 10^{-38}$〜約$ 10^{+38}$ 精度約6桁
  double 64 正負とも約$ 10^{-308}$〜約$ 10^{+308}$ 精度約15桁
  long double 96 正負とも約 $ 10^{-4932}$〜約 $ 10^{+4932}$ 精度約18桁

2.3 変数の使い方

2.3.1 変数定義

変数を使うためには,変数の定義が必要である.変数を定義するためには,型を指定して 名前をつける.例えば,次のようにする.
	char a, b, hoge;
	int i, j, fuga;
	double x, y, foo;

2.3.2 代入方法

変数に値(データ)を格納には,いろいろな方法がある.代表的なのは,代入演算子 (=)を使う方法とキーボードから入力する方法である.他にも,ファイルから読み込 む方法などがあるが,これは後期の講義の範囲.

代入演算子は,以下のようにして使う.

	a='f';
	hoge=a;

	i=3456;
	fuga=i+789;

	x=3.1415;
	foo=x/9.876;

キーボードから読み込む場合は,以下のようにする.

	scanf("%c",&hoge);
	scanf("%d",&fuga);
	scanf("%lf",&foo);
 

2.3.3 表示方法

データを表示するためには,以下のようにする.
	printf("%c\n",hoge);
	printf("%d\n",fuga);
	printf("%f\n",foo);
 

実数型のデータの表示には,変換仕様%fを使ってきた.これだと,非 常に大きな数や小さい数を表示する場合,不便である.ゼロがたくさん並ぶことになり, 見苦しい.このような場合,指数形式%lfが適している.また,新しいC言語の仕 様C99ではscanfとの対応を考えて,%lfが使えるようになっている.

	printf("%e\n",foo);
	printf("%lf\n",foo);
 




以上をまとめると,表3のようになる.

表 3: 整数と実数を使う場合の変数宣言など
  文字 整数  倍精度実数
変数の定義 char int double
キーボード入力 scanf %c %d %lf
ディスプレイ出力 printf %c %d %f,%lf,%e


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年6月27日


no counter