2 変数の扱いかた

2.1 実数の表示のしかた

2.1.1 指数表示

実数には非常に大きな数から小さな数まであるので,いろいろな表示方法がある.大きな 値の例として光の速度2 $ c\,\mathrm{[m/s]}$は,

$\displaystyle c$ $\displaystyle =299792458$    
  $\displaystyle =2.99792458\times10^{8}$    
  $\displaystyle =$2.99792458E+8    
  $\displaystyle =$2.99792458e+8    

のように表すことができる.2行目が数学等でしばしば目にする方法である.3行目は電卓 の表示方法で10の巾乗を大文字のEで表現する.4行目がC言語で一般的な表記である. 小文字のeをつかう.C言語では3行目のように大文字のEも使うことができるが,小文字 の方が一般的である.

このように実数を,小数部と10の巾乗であらわす方法を指数形式と言う.このようにする ことにより,非常に大きな数や小さな数をわかり易く簡単に表現できる.

一方,小さな値の例として,電子の質量 $ m_e\,\mathrm{[kg]}$

$\displaystyle m_e$ $\displaystyle =0.0000000000000000000000000000009109534$    
  $\displaystyle =9.109534\times 10^{-31}$    
  $\displaystyle =9.109534E-31$    
  $\displaystyle =9.109534e-31$    

となる.指数形式だと小さな数を表すのも簡単である.

2.1.2 C言語での表示

実数で表現されたデータは非常に大きな数から小さな数まである.そのため,ディスプレ イに表示する場合,いろいろな方法が選択できる(教科書p.75-76).小数で表す%f と指数形式の%e,小数と指数の分かりやすい方を適当に判断して表す%gである.これから, それぞれについて説明するが,その際,倍精度実数型の変数には以下の値が代入されているものと する.cは光速度,pは円周率,mは電子の質量である.
  c=2.99792458e+8;
  p=M_PI;
  m=9.109534e-31;
C言語での指数形式の代入は,このようにするのである.キーボードからデータを入れる ときも同じである.

2.2 初期化

ここは,教科書のp.78-81に述べていることである.

変数は定義する--型と変数名を指定--することにより,プログラム中で使うことができ るようになる.定義しただけでは,その変数の中にはいい加減な値が格納されている.ゼ ロになっているとは限らないのである.そのため,次のようにすると変数の定義と同時に 値を代入することができる.

	int i, j=7, hoge=456;
	double x, y=3.14, fuga=M_PI;

ここでは,整数型のjhoge,倍精度実数型のyfugaの値を宣言と 同時に決めている.このことを初期化と言う.

もう一度言うが,変数宣言をしただけでは,格納されている値は不定である.ゼロとは限 らないのである.今のところ,諸君が作成するプログラムでは初期化を忘れたことによる 失敗はない.しかし,将来は必ず初期化を忘れて,間違ったプログラムを書くだろう.私 も,しばしば初期化を忘れて失敗している.

2.3 型修飾子constの使い方

ここは,教科書のp.81-82に述べていることである.

いろいろなプログラムを作成するうちに,定数として扱いたい変数が出てくるであろう. 例えば,cを光の速度として,プログラム中で定数として扱いたい場合である.代入 文--例えば,c=3.14--を書かなければ済むが,うっかり代入文を書いてしまうこ とがある.普通のプログラマーはおっちょこちょいである.このようなミスを防ぐために, C言語では代入のできない変数を定義することができる.次のようにするのである.

	const double c=2.99792458e+8;

変数宣言の前に,型修飾子constをつける. constの語源はconstant(定数)で ある.

このようにすると,プログラマーが

	c=3.1415;

としようものなら,コンパイラーがエラーメッセージを出し,コンパイルに失敗する.ま ことに,便利な機能である.

しかし,次のようにキーボードからデータを読み込む場合は,コンパイルできてしまう.

	scanf("%lf",&c);
 

constを付けたからといって,安心してはならない.constがあると算術代入演 算子(=)の左辺として使えないだけである.
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年6月28日


no counter