(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5; 用%d和%f输出的结果不一样(前者为0,后者为3.50000)

帮下忙吧~~我都疯了!... 帮下忙吧~~我都疯了! 展开
 我来答
止咳糖浆79
2011-08-05 · 超过32用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:86.6万
展开全部
1、int 与 float在计算机中存储的方式不一样,int存储的%f显示为0,float存储的%d显示也是0
2、前面(float)(a+b)/2转换为浮点数结果是2.5
3、后面 (int)x%(int)y ,x=3,y=2,两者取余数为1
4、四则数据运算以前者为准,如:3.5+3 后面的3自动转换为3.0参与运算
5、结果是浮点数:3.50000(浮点数精确到第6位)
randong1379
2011-08-05 · TA获得超过104个赞
知道答主
回答量:94
采纳率:0%
帮助的人:49.6万
展开全部
由于 (float)(a+b)/2+(int)x%(int)y 得到的结果是 float ,但是输出格式是int 。 int 是2字节 而 float 是4字节,由flaot 转化为int 会出现数据丢失,好比你要把 2 KG 的酒装进 容量只有1KG的容器中,必然有一部分丢失,在内存中float 本来占32位,但是你用int 去格式化只读取低字节的16位,所以就得到你看到的结果咯。 (编译器不一样int 占字节不一样)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
珈蓝初昳me
2011-08-06
知道答主
回答量:19
采纳率:0%
帮助的人:11.4万
展开全部
不一样就对了,前面是整型输出,后面是浮点型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式