当带符号整数转换为整数或浮点类型时,如果该值可以在结果类型中表示,则该值不变。
当有符号整数转换为更大的整数时,该值将被符号扩展。 当转换成较小的整数时,高序位将被截断。 使用结果类型解释结果,如本例所示:
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
编译器将带符号整数转换为浮点类型时,如果原始值不能在结果类型中完全表示,则结果是下一个更高或更低的可表示值。
有关整型和浮点类型大小的信息,请参阅基本类型的存储。
下表汇总了来自带符号整型的转换。 它假定 char
类型在默认情况下是带符号的。 如果你使用编译时选项将 char
类型更改为在默认情况下是不带符号的,则应用的是 unsigned char
类型的从不带符号的整型类型转换表中给定的转换,而不是此表中的转换。
Microsoft 专用
在 Microsoft 编译器中,int
和 long
是不同但等效的类型。 int
值与 long
的转换方式是一样的。
结束 Microsoft 专用
从带符号整型转换的表