型キャスト
型キャストとは、ある型を他の型に変換する構文のことです。
(変換後の型名)値
int8_t型の値をint32_t型の値に変換する場合は以下のようになります。
#include <stdint.h> #include <stdio.h> int main(void) { int8_t num_i8 = 5; int32_t num_i32 = (int32_t)num_i8; printf("%d\n", num_i32); }
型変換の結果、精度が落ちてしまったり、型に互換性がないため、予期せぬ値になる場合もあるので、注意しましょう。
コンパイラによっては、型に互換性がないなど、間違いの可能性が高いものに警告を出すものもあります。
たとえばgccで「int32_t型」を汎用ポインタ型「void*」に型キャストした場合は、コンパイルは通りますが、警告が発生します。
#include <stdint.h> int main(void) { int32_t num = 5; void* ptr = (void*)num; }
警告内容。
a.c:5: warning: cast to pointer from integer of different size
暗黙の型変換と型変換規則
型変換の結果がどうなるかとういことは、暗黙の型変換と型変換規則で解説します。