rbbhka 发表于 2020-1-11 15:56:14

关于带你学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);
        }


把每一次循环的结果打印出来了,在选中的那一行开始出现不同,有没有大佬解释一下问题出在哪里

ba21 发表于 2020-1-11 18:23:40

反正我这是没有。
如果有问题肯定是在pow返回值
功能:计算x的y次幂。
返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果。
返回类型:double型
页: [1]
查看完整版本: 关于带你学C带你飞s1e6课后作业的疑问