次の方法で共有


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

は上位ビット符号なし整数を切り捨てることによって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 固有の仕様→

参照

概念

代入の変換