符号なし整数型からの変換
は上位ビット符号なし整数を切り捨てることによってshort unsigned または符号付き整数長い符号付きまたは符号付き整数にゼロ拡張によって変換されます ( 符号なし整数型からの変換 の表を参照してください。
整数型の値をそれよりサイズの符号付き整数に降格または符号なし整数が対応する符号付き整数に変換すると値が新しい型で表すことができる変更されません。ただしこの値は符号ビットが設定されている場合次の例のように変更を表します。
int j;
unsigned short k = 65533;
j = k;
printf_s( "%hd\n", j ); // Prints -3
このが表すことができない場合結果は実装定義されます。Microsoft C コンパイラの整数の降格処理の詳細については変換を型に展開します を参照してください。同じ動作は整数型への変換または整数型キャストになります。
符号なしの値がの値を保持する変換されC で直接表現でない場合はを返します。ただし下位ビットは最大で フローティング 失われる unsigned long からへの変換です。それ以外の場合値は保持され符号付きまたは符号なし。整数型の値をフローティングに変換され値を表現できる範囲外の場合結果は未定義です。(整数と浮動小数点型の範囲については基本的なストレージ を参照してください)。
次の表は符号なし整数型への変換を示します。
符号なし整数型からの変換
変換前 |
目的 |
メソッド |
---|---|---|
unsigned char |
char |
保存のビット パターン ; 上位ビットに符号ビットになります |
unsigned char |
short |
ゼロ拡張します。 |
unsigned char |
long |
ゼロ拡張します。 |
unsigned char |
unsigned short |
ゼロ拡張します。 |
unsigned char |
unsigned long |
ゼロ拡張します。 |
unsigned char |
float |
long; への変換 フローティング に変換 long |
unsigned char |
double |
long; への変換 倍精度浮動小数点型 に変換 long |
unsigned char |
long double |
long; への変換 倍精度浮動小数点型 に変換 long |
unsigned short |
char |
下位バイトの格納 |
unsigned short |
short |
保存のビット パターン ; 上位ビットに符号ビットになります |
unsigned short |
long |
ゼロ拡張します。 |
unsigned short |
unsigned char |
下位バイトの格納 |
unsigned short |
unsigned long |
ゼロ拡張します。 |
unsigned short |
float |
long; への変換 フローティング に変換 long |
unsigned short |
double |
long; への変換 倍精度浮動小数点型 に変換 long |
unsigned short |
long double |
long; への変換 倍精度浮動小数点型 に変換 long |
unsigned long |
char |
下位バイトの格納 |
unsigned long |
short |
下位ワードの保存 |
unsigned long |
long |
保存のビット パターン ; 上位ビットに符号ビットになります |
unsigned long |
unsigned char |
下位バイトの格納 |
unsigned long |
unsigned short |
下位ワードの保存 |
unsigned long |
float |
long; への変換 フローティング に変換 long |
unsigned long |
double |
倍精度浮動小数点型 への直接変換 |
unsigned long |
long double |
long; への変換 倍精度浮動小数点型 に変換 long |
Microsoft 固有の仕様 →
32 ビットの Microsoft C コンパイラではunsigned int の型は unsigned long の型と同じです。unsigned int の変換は unsigned long 変換と同様に移動します。unsigned long の値から フローティング への変換は変換された値を long の最大の符号付きの値よりも正確ではありません。
終了 Microsoft 固有の仕様→