鱼C论坛

 找回密码
 立即注册
查看: 1094|回复: 6

[已解决]取值范围程序的问题

[复制链接]
发表于 2020-4-4 02:52:38 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
#include <math.h>

int main()
{
        long long sum=0;
        long long temp;
        long long weight;
        int i;

        for (i=0; i < 64; i++)
        {
                temp = pow(2, i);
                sum = sum + temp;
        }

        weight = sum / 25000;

        printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
        printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);

        return 0;
}


舍罕王应该给予达依尔18446744073709551615粒麦子!
如果每25000粒麦子为1kg,那么应该给0公斤麦子!

请问为什么sum可以读出 weight读不出  测试过赋值weight=0无效 如果不赋值sum  两个都读不出 求大家帮助 谢谢
最佳答案
2020-4-4 11:18:45
mr6923612 发表于 2020-4-4 11:12
主要是及时sum赋值过0 sum可以读出来 后面的weight还是读0

所以我说可能是编译器的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-4 08:05:20 | 显示全部楼层
编译器的原因吧
sum需要初始化为0才能进行累加
weight是通过sum计算出来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 09:26:46 | 显示全部楼层
BngThea 发表于 2020-4-4 08:05
编译器的原因吧
sum需要初始化为0才能进行累加
weight是通过sum计算出来的

他的sum赋过初值0了
我这里连long long 都不认可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-4 11:12:40 | 显示全部楼层
BngThea 发表于 2020-4-4 08:05
编译器的原因吧
sum需要初始化为0才能进行累加
weight是通过sum计算出来的

主要是及时sum赋值过0 sum可以读出来 后面的weight还是读0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 11:18:45 | 显示全部楼层    本楼为最佳答案   
mr6923612 发表于 2020-4-4 11:12
主要是及时sum赋值过0 sum可以读出来 后面的weight还是读0

所以我说可能是编译器的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-4 12:32:07 | 显示全部楼层
BngThea 发表于 2020-4-4 11:18
所以我说可能是编译器的问题

后面会有更多的语句能解决这个问题不会让他超出范围是吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 12:45:06 | 显示全部楼层
mr6923612 发表于 2020-4-4 12:32
后面会有更多的语句能解决这个问题不会让他超出范围是吗?

是的,修改数据类型,比如double
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 13:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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