int型の変数をdouble型として扱いたい…
前項のdouble型のとき平均値を出すためにdouble型にしました。
しかし、何らかの理由で、int型の変数を使って平均値を出したい場合があったらどうでしょう。
例えば、%演算子は整数同士でしか演算できないためdouble型ではできないのです。しかし平均値はdouble型で小数点以下まで出したいですよね。
そんなとき、計算結果のみをdouble型にするといったことが出来るのがキャストです。
下のプログラムにキャストを使ってみました。
main.cpp
/*
平均値を表示する
*/
#include <stdio.h>
/* メイン関数 */
int main( void )
{
int na, nb;
puts( "2つの整数を入力してください" );
printf( "整数A:" );
scanf( "%d", &na );
printf( "整数B:" );
scanf( "%d", &nb );
printf( "2つの数値の剰余は%dです", na % nb ); // 剰余は整数で
printf( "平均値は%fです\n", (double)(na + nb) / 2 ); // 平均値は小数点以下まで
return(0);
}
使い方は簡単です。(型名)のようにカッコに型名を記述したものをキャストさせたい変数の直前に記述します。
キャストの型変換はキャストの記述した部分のみ行われます。
キャスト
int a = 5;
printf( "%f", (double)a / 3 );
キャストはどうしても変換しなければいけない時だけにしたほうが無難です。
むやみなキャストはエラーの原因になりかねません。
具体的に言うと先ほどのように型が違うと演算できないとき、または暗黙の型変換が行われてしまうときです。
暗黙の型変換とは、両方のオペランドの型が違う時に起こります。
例えば、左オペランドがintで右オペランドがdoubleの演算のときは左オペランドの値がdouble型に格上げされ、
double型同士の演算として行われてしまいます。
このようなときは予め、明示的にキャストしておくことをおすすめします。
最終更新:2012年05月21日 17:33