C 言語 | C 言語入門 | 型変換

異なるデータ型を含む式で、C 言語が値を変換する方法を説明する。

算術変換

式が異なる算術型を組み合わせる場合、C 言語はオペランドを適切な共通型へ変換する。小さな整数型は int へ拡張され、複数の型を含む式では、一般により広い範囲を表現できる型へ変換される。

コード 1

#include <stdio.h>

int main() {
 char chVar = 50;
 int iVar = 100;
 float fVar = .555;

 printf("%g\n", chVar + iVar + fVar);
 return 0;
}

この式は charintfloat を組み合わせ、150.555 を表示する。

代入変換

異なる型の変数へ値を代入する場合も、暗黙的な変換が行われる。より広い型への変換では、通常は情報が失われない。

char chVar = 100;
int iVar = chVar;

より狭い型への変換では、情報が失われる場合がある。

int iVar = 0xABCD;
unsigned char chVar = iVar;

unsigned char が 8 ビットなら、2 つ目の例では下位 8 ビットだけが保存され、0xCD になる。浮動小数点数を整数へ変換すると、小数部分は失われる。

明示的な型変換

変換を明示するにはキャストを使用する。

(変換先の型)値

コード 2

#include <stdio.h>

int main() {
 float fVar = 12.34f;
 printf("value = %g\n", fVar);
 printf("integer = %d\n", (int)fVar);
 printf("fraction = %g\n", fVar - (int)fVar);
 return 0;
}

キャストは便利だが、狭い型への変換ではデータが失われる可能性があるため注意する。