鱼C论坛

 找回密码
 立即注册
查看: 2148|回复: 1

关于带你学C带你飞s1e6课后作业的疑问

[复制链接]
发表于 2020-1-11 15:56:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


把每一次循环的结果打印出来了,在选中的那一行开始出现不同,有没有大佬解释一下问题出在哪里
结果.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-11 18:23:40 | 显示全部楼层
反正我这是没有。
如果有问题肯定是在pow返回值
功能:计算x的y次幂。
返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果。
返回类型:double型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 07:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表