次の方法で共有


符号付き整数型からの変換

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

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

int i = -3;
unsigned short u;

u = i;
printf_s( "%hu\n", u );  // Prints 65533

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

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

次の表は、符号付き整数型からの変換をまとめたものです。 char 型は既定では符号付きであると仮定されています。 コンパイル時オプションを使用して char 型の既定を unsigned (符号なし) に変更すると、この表の変換の代わりに、「符号なし整数型からの変換」の表で示されている unsigned char 型の変換が適用されます。

Microsoft 固有の仕様

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

Microsoft 固有の仕様はここまで

符号付き整数型からの変換の表

From 終了 メソッド
char 1 short 符号拡張。
char long 符号拡張。
char long long 符号拡張。
char unsigned char パターンを維持、上位ビットは符号ビットとしての機能を失う。
char unsigned short short への符号拡張、 short から unsigned short への変換
char unsigned long long への符号拡張、 long から unsigned long への変換
char unsigned long long long long への符号拡張、 long long から unsigned long long への変換
char float float として正確に表現
char double double として正確に表現
char long double long double として正確に表現
short char 下位バイトを維持。
short long 符号拡張。
short long long 符号拡張。
short unsigned char 下位バイトを維持。
short unsigned short ビット パターンを維持、上位ビットは符号ビットとしての機能を失う。
short unsigned long long への符号拡張、 long から unsigned long への変換
short unsigned long long long long への符号拡張、 long long から unsigned long long への変換
short float float として正確に表現
short double double として正確に表現
short long double long double として正確に表現
long char 下位バイトを維持。
long short 下位ワードを維持。
long long long 符号拡張。
long unsigned char 下位バイトを維持。
long unsigned short 下位ワードを維持。
long unsigned long ビット パターンを維持、上位ビットは符号ビットとしての機能を失う。
long unsigned long long long long への符号拡張、 long long から unsigned long long への変換
long float float として表される。 long を正確に表すことができない場合、精度が低下する場合があります。
long double double として正確に表現
long long double long double として正確に表現
long long char 下位バイトを維持。
long long short 下位ワードを維持。
long long long 下位 dword を維持。
long long unsigned char 下位バイトを維持。
long long unsigned short 下位ワードを維持。
long long unsigned long 下位 dword を維持。
long long unsigned long long ビット パターンを維持、上位ビットは符号ビットとしての機能を失う。
long long float float として表される。 long long を正確に表すことができない場合、精度が低下する場合があります。
long long double double として表される。 long longdouble として正確に表すことができない場合、精度が低下する場合があります。
long long long double double として表される。 long longdouble として正確に表すことができない場合、精度が低下する場合があります。

1char のすべてのエントリでは、 char 型は既定では符号付きであると想定されています。

関連項目

代入変換