型変換
ヘシン!
本来、違う型どうしでの計算はできないけれど、型を変換するとできるようになる。
暗黙的型変換
まず、違う型どうしを計算させようとしても、コンパイルできちゃう。
このとき、より表現の幅が広い型へと変換される。
例えば、double
と int
で演算するときは、int
の方が double
へと変換される。
500 * 1.08; // => 500. * 1.08 => 540.
更に、変数に代入するときはその変数の型へと変換される。
int price = 500;
price = price * 1.08; // price * 1.08 は double だが、再び int になる
price *= 1.08; // 上と同じ
static_cast
暗黙的ではなく、明示的な型変換もある。それがこれ。
static_cast < 型名 > ( 式 )
たまに使うくらいだけど、実際に使うとこんな感じ。
double num = 1.46;
// double を int にすると小数点以下が切り捨てられる
int num2 = static_cast<int>(num); // => 1
// int を double にすると小数点以下が 0 でスタートする
static_cast<double>(num2); // 1.0
これから型変換を明示するときに使うよ。