暗黙の型変換
たとえば次のように書くと自動的に型変換される(暗黙の型変換)。
int n = 531;
double d;
d = n; /* n の値が double 型に変換されて 531.0 が代入される */
double e = 2.71828183;
int n;
n = e; /* e の値が int 型に変換(小数点以下が切り捨てられる)されて 2 が代入される */
このように,int 型(整数)から double 型(小数)への変換は何の問題もなく変換される。しかし,double 型(小数)から int 型(整数)への変換は,int 型では小数を表せないため小数点以下が切り捨てられる。
明示的な型変換
以下のように (型名)変数名
と書くことで明示的に型変換させることもできる。(型名)
をキャスト演算子という。
double d = 11.56;
int n = (int)d; /* 浮動小数点型を int 型に変換(小数点以下は切り捨てられる) */
C 言語では,1 つの式に複数の型が混在している場合,式中に現れる型の中で最も精度の高い型に変換される。なお,char, int, float, double の順に精度が高い。
int a=5, b=3;
printf("%f\n", a/b); /* int型/int型の計算結果はint型 */
printf("%f\n", (double)a/b); /* double型/int型の計算結果はdouble型 */
1.000000
1.666667