关于pow()函数的问题 c/c++

 我来答
户长星印绿
2019-08-01 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:26%
帮助的人:768万
展开全部
首先说,我用GCC编译时出现了与LZ相同的差1情况,但用其他编译器无此现象,pow的实际行为来自于各个编译器的不同实现,各有差别是可以理解的,有误差更是无可厚非,然哪怕计算值比理论值少那么0.00000001,转换成整型时结果都会减1。但是传递参数给pow函数时,前后两次的参数事实上是一样的,同样的输入pow不可能会产生不同输出。我看了下GCC产生的汇编代码,发现实际上第二次调用pow实际上并没有真的调用,因为参数都是常量,GCC直接省略了pow调用过程而直接把结果值15625传给了printf函数。相同的调用做了不同处理,因而出现了两种结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式