*C言語* 〜12時限目〜 異なる型どうしで演算する・・・
〜目次〜
異なる型同士で演算する
型変換は足し算、引き算、掛け算、割り算といった四則演算などを
行う場合にも行われる場合があります。
以下のコードをみてください。
sample20.c
ーsample20の実行画面ー
直径が7cmの円の
円周は21.980000cmです。
sample20ではint型のdと、double型のpiの値を掛け算しています。
C言語では一般的に、演算子に異なる型のオペランドを記述した場合、
一方のオペランドを大きなサイズの方に型変換してから演算を行う
という決まりになっています。
つまり、sample20では
int型のdの値「2」が、
double型の数値「2.0」に変換されから、
掛け算が行われているのです。
なので、得られる式の値もdouble型になります。
同じ型同士で演算する
同じ型同士で演算した場合には、
その型で演算が行われ、結果もその型の値になります。
しかし、その演算が予想外になる場合があります。
以下のコードを入力してください。
sample21.c
ーsample21の実行画面ー
9/7は1.000000です。
実行結果をみてみると、思った通りの答えになっていません。
int型の変数を使って、9÷7の結果をdouble型に代入したコードです。
「1.28…」というdouble型が出力されることを期待しましたが、
そうなりませんでした。
これはint型の変数が計算されたため、「1」というint型の値として、
計算され、
その結果「1.0…」となってしまっているのです。
変数dnumにdouble型の値を格納させるためには、
変数num1かnum2の少なくとも一方を、
double型に変換する必要があります。
このためには割り算の部分をキャスト演算子を使って、
以下のように書き換えます。
dnum = (double)num1/(double)num2;
とすることで、期待通りの結果にすることができます。
このようにコードを書き換えることで、
double型の演算が行われるようになるのです。
結果もdouble型になります。
演算をする場合には、
オペランドの型に注意をする必要があります。
今回の時限は少し短めですが、
次回の時限から「場合に応じた処理」について、
学んでいきます。
〜END〜