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联系在一起。。。
展开
 我来答
该问答中所提及的号码未经验证,请注意甄别。
GTA小鸡
高粉答主

2018-04-26 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
写错了,是(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。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式