|
发表于 2021-11-29 20:27:58
|
显示全部楼层
本帖最后由 小鱼儿mxkk 于 2021-11-29 21:16 编辑
运行了下,如我所料:
'+=' : conversion from 'double' to 'unsigned long', possible loss of data
执行 cl.exe 时出错.
编译器已经告诉你了,你在将一个double变量赋给int变量,丢失精度,出错!
值得一提的是,你两种方法都出错了,也就是说,问题不在于这两种思路,
你要知道,pow函数的返回值是double型的,double变量怎么能赋给int变量呢?
mi = pow(2,i); or mi+=pow(2,i);都错了!!!!你只有让mi定义为double变量才可以.
如下代码,再试试:
#include<stdio.h>
#include<math.h>
int main()
{
int i;
double mi = 0;
double sum = 0;
for(i=1;i<=64;i++)
{
mi = pow(2,i);
sum += mi;
// mi+=pow(2,i);
}
printf("舍罕王应该给予达依尔%.0lf粒麦子!!!\n",mi);
printf("舍罕王应该给予达依尔%.0lf粒麦子!!!\n",sum);
return 0;
} |
|