5000 * 25= 125000,16位的int能表达的最大正数是32767,所以乘法的结果超出正整数最大值上溢出。 假定int采用截断的方法处理结果,125000的16进制数为1E848,只取后16bit,也就是4位16进制数,c=0xE848,而0xE848在16位int机器上表示0x-17B8,转换为十进制为-6072,因此最终得到的c的初始化值是错误的。
5000 * 25= 125000
,16位的int
能表达的最大正数是32767
,所以乘法的结果超出正整数最大值上溢出。假定
int
采用截断的方法处理结果,125000
的16进制数为1E848
,只取后16bit
,也就是4
位16进制数,c=0xE848
,而0xE848
在16位int机器上表示0x-17B8
,转换为十进制为-6072
,因此最终得到的c
的初始化值是错误的。