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;
}
この式は char、int、float を組み合わせ、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;
}
キャストは便利だが、狭い型への変換ではデータが失われる可能性があるため注意する。