Go 当您强制转换为较小的整数时会发生什么?
假设您有一个Go 当您强制转换为较小的整数时会发生什么?,go,Go,假设您有一个int64值。如果将该值强制转换为int32,会发生什么情况。它如何影响值的符号?它是否等同于使用模运算符?您指的是转换,而不是强制转换。报告的相关部分说: 在整数类型之间转换时,如果值是有符号整数,则将其符号扩展为隐式无限精度;否则它是零扩展的。然后截断它以适应结果类型的大小。例如,如果v:=uint16(0x10F0),则uint32(int8(v))==0xfffff0。转换总是产生一个有效值;没有溢出的迹象 从int64到int32的转换将截断。截断可能会影响值的符号 从in
int64
值。如果将该值强制转换为int32
,会发生什么情况。它如何影响值的符号?它是否等同于使用模运算符?您指的是转换,而不是强制转换。报告的相关部分说:
在整数类型之间转换时,如果值是有符号整数,则将其符号扩展为隐式无限精度;否则它是零扩展的。然后截断它以适应结果类型的大小。例如,如果v:=uint16(0x10F0),则uint32(int8(v))==0xfffff0。转换总是产生一个有效值;没有溢出的迹象
从int64
到int32
的转换将截断。截断可能会影响值的符号
从
int32
到int64
的转换由于隐式符号扩展而保留符号。当您尝试使用不同的数字时发生了什么?Go根本不允许您施放。但是如果你转换,你可能会溢出。这都在语言规范中解释过了,语言规范非常简洁易懂。查一查。