C言語で暗黙的に行われる型変換についてまとめます。今回は最後となります。代入による型変換です。
代入による型変換
この暗黙の型変換は、一番分かりやすいです。単に代入先の型に変換されるだけです。
暗黙の型変換のまとめ
ブログ記事にまとめた暗黙の型変換についてまとめます。この順に型変化が行われます。
3種類の暗黙の型変換について、実際の式での変換は以下の表となります。
表で、i32 は、int で32ビットの幅を持つ符号有り整数とします。u32 は、unsigned int で32ビットの幅を持つ符号無し整数とします。u8 は、unsigned char で8ビットの幅を持つ符号無し整数とします。
unsigne int は、ui という型名に typedef しています。
演算の式 | 汎整数拡張 | 算術型変換 | 代入による変換 | キャストを使った表現 |
i32 = i32 + i32; | ||||
i32 = u8 + u8; | ○ | i32 = (int)u8 + (int)u8; | ||
u32 = s32 + u32; | ○ | u32 = (ui)s32 + u32; | ||
u32 = s32; | ○ | u32 = (ui)s32; | ||
u32 = u8 + u8 | ○ | ○ | u32 = (ui)((int)u8 + (int)u8); | |
u32 = u32 + u8 | ○ | ○ | u32 = u32 + (ui)((int)u8); | |
i32 = i32 + u32 | ○ | ○ | s32 = (int)((ui)u32 + u32); | |
s32 = u32 + u8 | ○ | ○ | ○ | s32 = (int)(u32 + (u32)((int)u8)); |
暗黙の型変換を避けるという意味では、int で書くことが好ましいようです。そのための int 型だと思います。
最後に
C言語の暗黙の型変換についてまとめました。自分自身の勉強にもなりました。
C言語を使いこなしていきましょう!