第六课课后作业动动手疑问
#include <stdio.h>#include <math.h>
int main()
{
unsigned long longsum = 0;
unsigned long longweight;
int i;
unsigned long longtemp;
for (i=0; i < 64; i++)
{
temp = pow(2, i);
sum = sum + temp;
}
weight = sum / 25000;
printf("%11u\n", sum);
printf("%11u\n", weight);
return 0;
}
为什么我的答案执行出来是
而正确答案是
代码一模一样 temp = (unsigned long long)pow(2, i); 然后你的 printf() 里面是小写 LLU , 不是一 哈哈,楼主和我之前一样,把llu写成了11u,握手握手 sunnyrubik 发表于 2018-10-14 23:32
哈哈,楼主和我之前一样,把llu写成了11u,握手握手
哈哈哈 claws0n 发表于 2018-10-14 16:26
temp = (unsigned long long)pow(2, i);
这个强制转换有什么用吗 claws0n 发表于 2018-10-14 16:34
然后你的 printf() 里面是小写 LLU , 不是一
llu是什么意思啊,我以为是要11位 LSForever0 发表于 2018-10-15 11:20
这个强制转换有什么用吗
有用,因为 power 只支持到 double,你那个值明显是溢出了,看一下 double 的最大值
LLU , Unsigned Long Long int 呀~ 1 Il 丨|{:10_256:}都认识吗? pheron 发表于 2018-10-15 16:38
1 Il 丨|都认识吗?
{:10_282:} LSForever0 发表于 2018-10-17 20:18
1、I(i)、l (L)、丨(中文shu、gun等多音字)、| (逻辑运算符“或”)
页:
[1]