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

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

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

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 long への変換、 longfloat に変換
unsigned char double long への変換、 longdouble に変換
unsigned char long double long への変換、 longdouble に変換
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 long への変換、 longfloat に変換
unsigned short double long への変換、 longdouble に変換
unsigned short long double long への変換、 longdouble に変換
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 long への変換、 longfloat に変換
unsigned long double double への直接変換
unsigned long long double long への変換、 longdouble に変換
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 long への変換、 longfloat に変換
unsigned long long double double への直接変換
unsigned long long long double long への変換、 longdouble に変換

関連項目

代入変換