C言語 キャスト演算子
キャスト演算子とは、型の変換を行う演算子という理解。次のような例を考える。
#include <stdio.h> void main() { double x; x = 7/3; printf("x=%f\n",x); }
xは2.33333…という値が出力されるはず。しかし、実行後の結果は
x=2.000000
となる。この原因は、
C言語は演算を行った解は、演算時に用いた値によって型が決まる
ことによるらしい。上記の場合はxをdouble(実数)で定義しても、7や3は整数なので、7÷3は2.3333…の小数点以下を切り捨てて2という整数値が解となる。では、7を実数値として7.0とすればどうか。
#include <stdio.h> void main() { double x; x = 7.0/3; printf("x=%f\n",x); }
結果は、
x=2.333333
となり、意図した結果が得られる。つまり、C言語では
C言語は演算を行った解は、演算時に用いた値によって型が決まる(精度の高い方の型に合わせることになる)
ことになる。上記において、分母や分子が変数の場合は上記のように実数を表す表記(7.0)が出来ない。
#include <stdio.h> void main() { double x; int a = 7; int b = 3; x = a/b; //結果は2となる printf("x=%f\n",x); }
計算過程で型が意図しない値に変わってしないようにするには、上記赤字とキャスト演算子(括弧部分)を使う。
#include <stdio.h> void main() { double x; int a = 7; int b = 3; x = (double)a/b; //(double)がキャスト演算子 printf("x=%f\n",x); }
結果は、
x=2.333333
となり、意図した結果が得られる。