符号なし整数型からの変換

符号なし整数を整数または浮動小数点型に変換する場合、元の値が結果の型で表現できる場合は、値が変更されることはありません。

コンパイラによって符号なし整数がより大きいサイズの整数に変換されると、その値はゼロ拡張されます。 より小さいサイズの整数に変換されると、上位ビットは切り捨てられます。 結果は、この例に示すように、結果の型を使用して解釈されます。

unsigned k = 65533;
short j;

j = k;
printf_s( "%hd\n", j );   // Prints -3

コンパイラによって符号なし整数が浮動小数点型に変換される場合、元の値が結果の型で正確に表現できないときは、結果は次に大きいまたは次に小さい表現可能な値になります。

整数型と浮動小数点型のサイズの詳細については、「基本型のストレージ」を参照してください。

Microsoft 固有の仕様

Microsoft コンパイラでは、 unsigned (または unsigned int ) と unsigned long は区別されますが、同等の型です。 unsigned int 値の変換は、unsigned long の変換と同様に実行されます。

Microsoft 固有の仕様はここまで

次の表は、符号なし整数型からの変換をまとめたものです。

符号なし整数型からの変換の表

From 終了 メソッド
unsigned char char ビット パターンを維持、上位ビットが符号ビットになる。
unsigned char short ゼロ拡張。
unsigned char long ゼロ拡張。
unsigned char long long ゼロ拡張。
unsigned char unsigned short ゼロ拡張。
unsigned char unsigned long ゼロ拡張。
unsigned char unsigned long long ゼロ拡張。
unsigned char float float に正確に変換
unsigned char double double に正確に変換
unsigned char long double long double に正確に変換
unsigned short char 下位バイトを維持。
unsigned short short ビット パターンを維持、上位ビットが符号ビットになる。
unsigned short long ゼロ拡張。
unsigned short long long ゼロ拡張。
unsigned short unsigned char 下位バイトを維持。
unsigned short unsigned long ゼロ拡張。
unsigned short unsigned long long ゼロ拡張。
unsigned short float float に正確に変換
unsigned short double double に正確に変換
unsigned short long double long double に正確に変換
unsigned long char 下位バイトを維持。
unsigned long short 下位ワードを維持。
unsigned long long ビット パターンを維持、上位ビットが符号ビットになる。
unsigned long long long ゼロ拡張。
unsigned long unsigned char 下位バイトを維持。
unsigned long unsigned short 下位ワードを維持。
unsigned long unsigned long long ゼロ拡張。
unsigned long float 最も近い表現可能な float に変換
unsigned long double double に正確に変換
unsigned long long double long double に正確に変換
unsigned long long char 下位バイトを維持。
unsigned long long short 下位ワードを維持。
unsigned long long long 下位 dword を維持。
unsigned long long long long ビット パターンを維持、上位ビットが符号ビットになる。
unsigned long long unsigned char 下位バイトを維持。
unsigned long long unsigned short 下位ワードを維持。
unsigned long long unsigned long 下位 dword を維持。
unsigned long long float 最も近い表現可能な float に変換
unsigned long long double 最も近い表現可能な double に変換
unsigned long long long double 最も近い表現可能な long double に変換

関連項目

代入変換