C言語 キャスト演算子

キャスト演算子とは、型の変換を行う演算子という理解。次のような例を考える。

#include <stdio.h>
void main() {
        double x;

        x = 7/3;
        printf("x=%f\n",x);
}

xは2.33333…という値が出力されるはず。しかし、実行後の結果は

x=2.000000

となる。この原因は、

C言語は演算を行った解は、演算時に用いた値によって型が決まる

ことによるらしい。上記の場合はxをdouble(実数)で定義しても、7や3は整数なので、7÷3は2.3333…の小数点以下を切り捨てて2という整数値が解となる。では、7を実数値として7.0とすればどうか。

#include <stdio.h>
void main() {
        double x;

        x = 7.0/3;
        printf("x=%f\n",x);
}

結果は、

x=2.333333

となり、意図した結果が得られる。つまり、C言語では

C言語は演算を行った解は、演算時に用いた値によって型が決まる(精度の高い方の型に合わせることになる)

ことになる。上記において、分母や分子が変数の場合は上記のように実数を表す表記(7.0)が出来ない。

#include <stdio.h>
void main() {
        double x;
        int a = 7;
        int b = 3;
        x = a/b;                //結果は2となる
        printf("x=%f\n",x);
}

計算過程で型が意図しない値に変わってしないようにするには、上記赤字とキャスト演算子(括弧部分)を使う。

#include <stdio.h>
void main() {
        double x;
        int a = 7;
        int b = 3;
        x = (double)a/b;                //(double)がキャスト演算子
        printf("x=%f\n",x);
}

結果は、

x=2.333333

となり、意図した結果が得られる。