符号付き整数型からの変換
符号付き整数が値の符号なし整数に変換されるかまたは符号付き整数の最大サイズと値が負でない場合値は変更されません。変換は符号付き整数の符号拡張によって行われます。符号付き整数ではあるに上位ビット符号付き整数を切り捨てることによって変換されます。結果にはこの例に示す符号なしの値として解釈されます。
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
情報は long int または unsigned long int の値が フローティング の値に変換するときに符号付き整数がフローティング状態の値に変換する精度が失われる可能性がある場合失われません。
次の表は符号付き整数型への変換を示します。次の表は char の型が既定で署名すると仮定します。署名は char 型の既定値を変更することによりコンパイル時にオプションを使用すると unsigned char の種類の 符号なし整数型からの変換 の表に示す変換は次の表の変換符号付き整数型からの変換ではなく適用されます。
符号付き整数型からの変換
変換前 |
目的 |
メソッド |
---|---|---|
char1 |
short |
符号拡張します。 |
char |
long |
符号拡張します。 |
char |
unsigned char |
保存のパターン ; 上位ビットに符号ビットとして関数を失います |
char |
unsigned short |
短い名前 に符号拡張します ; unsigned short に 短い名前 を変換します。 |
char |
unsigned long |
long に符号拡張します ; unsigned long に long を変換します。 |
char |
float |
long に符号拡張します ; フローティング に long を変換します。 |
char |
double |
long に符号拡張します ; 倍精度浮動小数点型 に long を変換します。 |
char |
long double |
long に符号拡張します ; 倍精度浮動小数点型 に long を変換します。 |
short |
char |
下位バイトの格納 |
short |
long |
符号拡張します。 |
short |
unsigned char |
下位バイトの格納 |
short |
unsigned short |
保存のビット パターン ; 上位ビットに符号ビットとして関数を失います |
short |
unsigned long |
long に符号拡張します ; unsigned long に long を変換します。 |
short |
float |
long に符号拡張します ; フローティング に long を変換します。 |
short |
double |
long に符号拡張します ; 倍精度浮動小数点型 に long を変換します。 |
short |
long double |
long に符号拡張します ; 倍精度浮動小数点型 に long を変換します。 |
long |
char |
下位バイトの格納 |
long |
short |
下位ワードの保存 |
long |
unsigned char |
下位バイトの格納 |
long |
unsigned short |
下位ワードの保存 |
long |
unsigned long |
保存のビット パターン ; 上位ビットに符号ビットとして関数を失います |
long |
float |
フローティング として表します。long が正確に表すことができない場合は精度は失われます。 |
long |
double |
倍精度浮動小数点型 として表します。long が 倍精度浮動小数点型 と正確に表すことができない場合は精度は失われます。 |
long |
long double |
倍精度浮動小数点型 として表します。long が 倍精度浮動小数点型 と正確に表すことができない場合は精度は失われます。 |
1.char のすべてのエントリは char の型が既定で署名すると仮定します。
Microsoft 固有の仕様 →
32 ビットの Microsoft C コンパイラでは整数は long と同じです。int の値の順序の変換 long の場合と同じです。
終了 Microsoft 固有の仕様→