2.99792458E+8 | ||
2.99792458e+8 |
このように実数を,小数部と10の巾乗であらわす方法を指数形式と言う.このようにする ことにより,非常に大きな数や小さな数をわかり易く簡単に表現できる.
一方,小さな値の例として,電子の質量 は
c=2.99792458e+8; p=M_PI; m=9.109534e-31;C言語での指数形式の代入は,このようにするのである.キーボードからデータを入れる ときも同じである.
いままで使ってきた方法で小数で表す.整数部分と小数点以下6桁で表示する.
printf("c=%f\n",c); | c=299792458.000000 | |||||
printf("p=%f\n",p); | p=3.141593 | |||||
printf("m=%f\n",m); | m=0.000000 |
整数部分と小数点以下n桁で表示する.小数を任意の桁数で表示したいと きに使う.
printf("c=%0.10f\n",c); | c=299792458.0000000000 | |||||
printf("p=%0.10f\n",p); | p=3.1415926536 | |||||
printf("m=%0.10f\n",m); | m=0.0000000000 |
全体で少なくともmカラム用意して,小数点以下n桁で表示する. mカラムと言うのは文字が書ける枠の数である.
printf("c=%53.40f\n",c); | c= 299792458.0000000000000000000000000000000000000000 | |||||
printf("p=%53.40f\n",p); | p= 3.1415926535897931159979634685441851615906 | |||||
printf("m=%53.40f\n",m); | m= 0.0000000000000000000000000000009109534000 |
指数形式で表示する.小数点以下は6桁である.
printf("c=%e\n",c); | c=2.997925e+08 | |||||
printf("p=%e\n",p); | p=3.141593e+00 | |||||
printf("m=%e\n",m); | m=9.109534e-31 |
小数点以下6桁の指数形式で表示する.
printf("c=%0.10e\n",c); | c=2.9979245800e+08 | |||||
printf("p=%0.10e\n",p); | p=3.1415926536e+00 | |||||
printf("m=%0.10e\n",m); | m=9.1095340000e-31 |
小数での桁数が多くなった場合,指数形式で表す.私はめったに使わない.
printf("c=%g\n",c); | c=2.99792e+08 | |||||
printf("p=%g\n",p); | p=3.14159 | |||||
printf("m=%g\n",m); | m=9.10953e-31 |
変数は定義する--型と変数名を指定--することにより,プログラム中で使うことができ るようになる.定義しただけでは,その変数の中にはいい加減な値が格納されている.ゼ ロになっているとは限らないのである.そのため,次のようにすると変数の定義と同時に 値を代入することができる.
int i, j=7, hoge=456; double x, y=3.14, fuga=M_PI;
もう一度言うが,変数宣言をしただけでは,格納されている値は不定である.ゼロとは限 らないのである.今のところ,諸君が作成するプログラムでは初期化を忘れたことによる 失敗はない.しかし,将来は必ず初期化を忘れて,間違ったプログラムを書くだろう.私 も,しばしば初期化を忘れて失敗している.
いろいろなプログラムを作成するうちに,定数として扱いたい変数が出てくるであろう. 例えば,cを光の速度として,プログラム中で定数として扱いたい場合である.代入 文--例えば,c=3.14--を書かなければ済むが,うっかり代入文を書いてしまうこ とがある.普通のプログラマーはおっちょこちょいである.このようなミスを防ぐために, C言語では代入のできない変数を定義することができる.次のようにするのである.
const double c=2.99792458e+8;
このようにすると,プログラマーが
c=3.1415;
しかし,次のようにキーボードからデータを読み込む場合は,コンパイルできてしまう.
scanf("%lf",&c);