
45
4
章
型変換
Cでは、異なる型のオペランドを1つの演算で使える。例えば、次の式が可能だ。
double dVar = 2.5; // dVar
を型
double
の変数と定義
dVar *= 3; // dVar
に整数定数を掛ける
if (dVar < 10L) // dVar
を
long
整数定数と比較
{
/* ... */
}
オペランドが異なる型なら、コンパイラは演算を行う前に、統一した型に変換する。場
合によっては、プログラムに型変換命令を挿入しなければならない。型変換により、式の
値は新たな型、型
void
(式の値が捨てられたことを意味する。「2.6.2型voidの式」参照)ま
たはスカラ型、すなわち、算術型またはポインタになり得る。例えば、構造体へのポインタ
は異なるポインタ型に変換され得る。しかし、実際の構造体の値を異なる構造体型に変換
することはできない。
コ
ンパイラは、オペランドが不一致型、あるいは関数の引数と一致しない型の引数で呼
び出したとき、暗黙的型変換を行う。プログラムは、変数の初期化や値代入のときにも必
要に応じて暗黙的型変換を行う。必要な変換が可能でなければ、コンパイラはエラーメッ
セージを表示する。
キャスト演算子(5章を参照)を使って明示的に型変換を行うこともできる。
(
type_name
)
expression
次の例でキャスト演算子により、整数変数の除算は浮動小数点演算として実行する。
int sum = 22, count = 5;
double mean = (double) ...