当带符号整数转换为整数或浮点类型时,如果该值可以在结果类型中表示,则该值不变。

当有符号整数转换为更大的整数时,该值将被符号扩展。 当转换成较小的整数时,高序位将被截断。 使用结果类型解释结果,如本例所示:

int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u );  // Prints 65533

编译器将带符号整数转换为浮点类型时,如果原始值不能在结果类型中完全表示,则结果是下一个更高或更低的可表示值。

有关整型和浮点类型大小的信息,请参阅基本类型的存储

下表汇总了来自带符号整型的转换。 它假定 char 类型在默认情况下是带符号的。 如果你使用编译时选项将 char 类型更改为在默认情况下是不带符号的,则应用的是 unsigned char 类型的从不带符号的整型类型转换表中给定的转换,而不是此表中的转换。

Microsoft 专用

在 Microsoft 编译器中,intlong 是不同但等效的类型。 int 值与 long 的转换方式是一样的。

结束 Microsoft 专用

从带符号整型转换的表