关于带你学C带你飞s1e6课后作业的疑问
带你学C带你飞第一季课后作业s1e6,数据类型,课后作业,动动手1部分代码如下,使用了temp的那个方法,不会溢出,刚好是unsigned long long的上限值,和答案一致
但是没用temp的那个方法,比使用了temp的最终结果多了1,结果溢出变成了0
printf("动动手1:\n");
unsigned long long result1 = 0;
unsigned long long temp;
for(int i=0;i<64;i++)
{
// 不溢出
temp = pow(2,i);
result1 = result1 + temp;
// 溢出
// result1 = result1 + pow(2,i);
printf("结果是:%llu\n",result1);
}
把每一次循环的结果打印出来了,在选中的那一行开始出现不同,有没有大佬解释一下问题出在哪里 反正我这是没有。
如果有问题肯定是在pow返回值
功能:计算x的y次幂。
返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果。
返回类型:double型
页:
[1]