<型変換とは>
変数の代入や計算の際に、ある型の値を他の型に変換することを「型変換」といいます。
<暗黙の型変換と明示的型変換>
暗黙の型変換:コンパイラが自動的に行う型変換です。
明示的型変換:プログラマが行う型変換です。
<代入時の暗黙の型変換>
左辺と右辺の型が異なっている場合は,左辺の型に変換されます。
精度が高い型から精度が低い型への変換の場合問題が生じます。
(例1)char c = 'A';
int
a;
a
= c; // 1バイトのcが2バイトに拡張されるので問題ない
(例2)long a=4000;
short
b;
b
= a; // 4バイトのaが2バイトにされてしまう.
(例3)double d=12.345;
int
i;
i
= d; // iにはdの整数部しか格納されない
<式の中で行われる暗黙の型変換>
式の中で異なる型の定数や変数が現れたときには,精度の高い型に統一されます。
(例) short i_dt = 5;
long
l_dt = 5;
double
d_dt = 23.6;
double
kekka;
kekka
= i_dt * l_dt + d_dt;
この例では,i_dtがlongに変換されてl_dtと乗算され,その結果がdoubleに変換されてd_dtと加算されます。
<明示的型変換(キャスト)>
(例) int a=10, b=4;
double
x;
x
= a/b;
この例の場合,答えは2.5を期待しているのですが、int型どうしの演算では小数値をとれません。この場合プログラマが明示的に型変換する必要があります。
(構文) (型名)式
(例) x = (double)a/b;
このようにすると,aとbはdoubleとして割り算され,xには2.5が得られます。