取值范围程序的问题
#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两个都读不出 求大家帮助 谢谢 编译器的原因吧
sum需要初始化为0才能进行累加
weight是通过sum计算出来的 BngThea 发表于 2020-4-4 08:05
编译器的原因吧
sum需要初始化为0才能进行累加
weight是通过sum计算出来的
他的sum赋过初值0了
我这里连long long 都不认可{:10_266:} BngThea 发表于 2020-4-4 08:05
编译器的原因吧
sum需要初始化为0才能进行累加
weight是通过sum计算出来的
主要是及时sum赋值过0 sum可以读出来 后面的weight还是读0 mr6923612 发表于 2020-4-4 11:12
主要是及时sum赋值过0 sum可以读出来 后面的weight还是读0
所以我说可能是编译器的问题 BngThea 发表于 2020-4-4 11:18
所以我说可能是编译器的问题
后面会有更多的语句能解决这个问题不会让他超出范围是吗? mr6923612 发表于 2020-4-4 12:32
后面会有更多的语句能解决这个问题不会让他超出范围是吗?
是的,修改数据类型,比如double
页:
[1]