(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5; 用%d和%f输出的结果不一样(前者为0,后者为3.50000)
3个回答
展开全部
由于 (float)(a+b)/2+(int)x%(int)y 得到的结果是 float ,但是输出格式是int 。 int 是2字节 而 float 是4字节,由flaot 转化为int 会出现数据丢失,好比你要把 2 KG 的酒装进 容量只有1KG的容器中,必然有一部分丢失,在内存中float 本来占32位,但是你用int 去格式化只读取低字节的16位,所以就得到你看到的结果咯。 (编译器不一样int 占字节不一样)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不一样就对了,前面是整型输出,后面是浮点型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询