C言語の型キャストについてのまとめ

C言語の型キャストについて勉強したので、まとめ。ちなみに、型キャストは型変換とも呼ばれている。

計算における型キャスト

C言語において異なる型同士で計算を行った場合、より精度の高い型に合わせて計算が行われるようになっている。

例えば、float + int の計算であれば計算結果はfloat型になるし、 double + floatであればdouble型になる。

#include <stdio.h>

void main() {
  int i = 2;
  float f = 3.0;
  printf("%f", f / i);  /*  1.500000 と表示  */
}

参考記事:型変換

ただし、int型同士で計算して最終的な結果はfloatにしたいという場合がある。その時は、*明示的に型キャストをしてあげる**ことで解決できる。

#include <stdio.h>

void main() {
  int i = 3;
  int i2 = 2;
  printf("%f", (float)i / i2);  /*  1.500000 と表示  */
}

defineの型キャスト

defineの型キャストと言う言葉は不適切かもしれないが、本記事の本題である型キャストに寄せた見出しにした。

C言語では以下の様に#defineが多用されているが、これはあくまでも置き換えをしているだけで、実態は単に整数や文字列、浮動小数点を置いているに過ぎない。

参考記事:C言語についての質問です。#defineで宣言した変数は、どのようなデータ型になる... - Yahoo!知恵袋