【課題1−12 暗黙の型変換】
<型変換とは>
変数の代入や計算の際に,ある型の値を他の型に変換すること.
<暗黙の型変換と明示的型変換>
暗黙の型変換:コンパイラが自動的に行う型変換.
明示的型変換:プログラマが行う型変換
<代入時の暗黙の型変換>
左辺と右辺の型が異なっている場合は,左辺の型に変換する.
精度が高い型から精度が低い型への変換の場合問題が生じる.
(例1)char c = 'A';
int a;
a = c; // 1バイトのcが2バイトに拡張されるので問題ない
(例2)long a=4000;
int b;
b = a; // 4バイトのaが2バイトにされてしまう.
(例3)double d=12.345;
int i;
i = d; // iにはdの整数部しか格納されない
<式の中で行われる暗黙の型変換>
式の中で異なる型の定数や変数が現れたときには,精度の高い型に統一される.
(例) int
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が得られる.