我用 pow(10,2) 和 pow(10,j), j=2; 得到了不同的结果;

2023-12-21

这个打印 100:

int j=2;
int i= pow(10,2);  
printf("%d\n", i);

这个打印 99:

int j=2;
int i= pow(10,j);  
printf("%d\n", i);

Why?


发生的情况是,您有一个 C 实现,其标准库的实现质量非常低pow即使确切的结果可以用类型 (double)。致电给pow(10,2)似乎产生的价值略低于100.0,当四舍五入为整数时,得到 99。当参数为常量时,您看不到这一点的原因是编译器擅自优化了所有调用,并在编译时将其替换为常量 100。

如果您的目的是执行整数幂,请不要使用pow功能。写出适当的整数幂函数,或者当指数已知时,直接写出乘法即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我用 pow(10,2) 和 pow(10,j), j=2; 得到了不同的结果; 的相关文章

随机推荐