LSForever0 发表于 2018-10-14 16:16:34

第六课课后作业动动手疑问

#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;
}

为什么我的答案执行出来是

而正确答案是

LSForever0 发表于 2018-10-14 16:17:04

代码一模一样

claws0n 发表于 2018-10-14 16:26:16

temp = (unsigned long long)pow(2, i);

claws0n 发表于 2018-10-14 16:34:12

然后你的 printf() 里面是小写 LLU , 不是一

sunnyrubik 发表于 2018-10-14 23:32:29

哈哈,楼主和我之前一样,把llu写成了11u,握手握手

LSForever0 发表于 2018-10-15 11:16:58

sunnyrubik 发表于 2018-10-14 23:32
哈哈,楼主和我之前一样,把llu写成了11u,握手握手

哈哈哈

LSForever0 发表于 2018-10-15 11:20:43

claws0n 发表于 2018-10-14 16:26
temp = (unsigned long long)pow(2, i);

这个强制转换有什么用吗

LSForever0 发表于 2018-10-15 11:21:54

claws0n 发表于 2018-10-14 16:34
然后你的 printf() 里面是小写 LLU , 不是一

llu是什么意思啊,我以为是要11位

claws0n 发表于 2018-10-15 11:25:19

LSForever0 发表于 2018-10-15 11:20
这个强制转换有什么用吗

有用,因为 power 只支持到 double,你那个值明显是溢出了,看一下 double 的最大值
LLU , Unsigned Long Long int 呀~

pheron 发表于 2018-10-15 16:38:37

1 Il 丨|{:10_256:}都认识吗?

LSForever0 发表于 2018-10-17 20:18:21

pheron 发表于 2018-10-15 16:38
1 Il 丨|都认识吗?

{:10_282:}

pheron 发表于 2018-10-18 09:12:50

LSForever0 发表于 2018-10-17 20:18


1、I(i)、l (L)、丨(中文shu、gun等多音字)、| (逻辑运算符“或”)
页: [1]
查看完整版本: 第六课课后作业动动手疑问