问题描述:
请看下面代码
#include <stdio.h>
#include <math.h>
int main(void)
{
int res=0;
int i=2;
res=pow(10,i);
printf("%d",res);
return 0;
}
期望输出100,但是在panda Dev cpp6.7.5版本中会输出99
在看下面的代码 正确输出100
#include <stdio.h>
#include <math.h>
int main(void)
{
int res=0;
int i=2;
res=pow(10,2);
printf("%d",res);
return 0;
}
上述代码区别在pow()函数传入int 类型的 i(值为2)与直接传入2
前者出现错误,而后者正确。
已知:pow()函数计算幂需要传入double类型数据,当传入int类型数据时会隐式转换类型为double
我推测小熊猫Dev cpp6.7.5在传入变量时存在隐式转换问题。
下面是我的版本6.7.5
我尝试下面代码,发现在pow(10,i)中当i=2,4,7,8,9时出现问题
解决方法:
使用小龙版dev cpp 6.0版本没有上述问题
小结:初学者最好使用最新版本的编译器,或者仍在维护中的编译器项目,比如小龙版本dev cpp
devcpp: Windows 环境下的一个轻量级免费 C/C++ 集成开发环境(IDE)
小熊猫版本编译器6.7.5下载(可供问题复现)
https://wwi.lanzoup.com/imkxI27b1zkh
密码:1234