这个打印 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(使用前将#替换为@)