c语言中float数据转换成short数据,如题
floatfFloat=70000;ishort=ishort(fFloat);printf("%ld\n",ishort);结果是:4464请问这是怎么转换过来的,希望...
float fFloat=70000;
ishort=ishort(fFloat);
printf("%ld\n",ishort);
结果是:4464
请问这是怎么转换过来的,希望详细一些,谢谢了,怎么也想不到把70000和4464联系在一起。。。 展开
ishort=ishort(fFloat);
printf("%ld\n",ishort);
结果是:4464
请问这是怎么转换过来的,希望详细一些,谢谢了,怎么也想不到把70000和4464联系在一起。。。 展开
提示该问答中所提及的号码未经验证,请注意甄别。
1个回答
展开全部
写错了,是(short)fFloat,表示将fFloat强制转换为short型。short型为2字节16位,范围-32768~32767,70000已经超出上界,发生上溢,需要减掉65536,7000-65536=4464。4464在short范围内,所以最终值就是4464。
追问
(对对对,第二行等号后的i应该去掉,我的过失),那么请问这个70000减去65536,就是减去了2的16次方,这有什么道理可循吗,能叙述一下这个减法式子的意义吗?
追答
short型16位共可表示65536个数。short型最大值32767,再+1就会变成-32768,相当于减去65536。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询