z = (x - y) + y

机器觉知 2016-07-05 07:26:20
我在阅读c99标准的时候遇见这样的问题:
z = (x - y) + y ; // not equivalent toz = x;
不理解是为什么,求帮助
...全文
1028 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly 100% 2016-07-10
  • 打赏
  • 举报
回复
针对不同情况对程序不能进行简化
jiayou0909 2016-07-09
  • 打赏
  • 举报
回复
double是浮点运算,会产生误差,例如舍入误差。你这种情况,例如当有 |y|>>|x| ,差距足够大时,x-y 和 0.0 - y没什么区别。(x-y)+ y 的结果趋于0.0
gordon71305 2016-07-07
  • 打赏
  • 举报
回复
有几个可能的,例如x是8位,y是一个16位数这结果便会不同了。
of123 2016-07-06
  • 打赏
  • 举报
回复
z = (x - y) + y ; // not equivalent to z = x; 是说在机器实现上两式不等价。 但也不要理解为任何情况下两式中的 z 都不相等。
进击的奶瓶 2016-07-05
  • 打赏
  • 举报
回复
LZ提问少了个前提,double类型

2,432

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 其他硬件开发
社区管理员
  • 其他硬件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧