洛城闻笛 发表于 2018-7-28 00:00:29

带你学才带你飞S1E6数据类型课后习题

两个程序基本一样,为什么结果不一样?

洛城闻笛 发表于 2018-7-28 00:28:29

我算了下unsigne long long是8个字节,我又把每个temp都答应出来了,发现两个程序都在2的31次方之后为0,可能是溢出了,但是还是不知道为什答案不一样?

ba21 发表于 2018-7-28 09:43:22

pow是double

unsigned long long(pow)

无符号整形 发表于 2018-7-28 10:19:04

应该是操作系统和机器的不同导致的。
你的操作系统是不是32位的?

向上的蜗牛 发表于 2018-7-28 10:19:21

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

int main()
{
        unsigned long long sum=0,temp,weight;
        int i;
       
        for(i=0;i<64;i++)
        {
                temp=pow(2,i);
                sum+=temp;
        }
        weight = sum/25000;
       
        printf("%llu\n",sum);
        printf("%llu",weight);
}

我随便抄了一下,我这边运行是对的,你调试一下

向上的蜗牛 发表于 2018-7-28 10:22:01

你是不是%llu打成了%11u?

洛城闻笛 发表于 2018-7-28 17:02:50

无符号整形 发表于 2018-7-28 10:19
应该是操作系统和机器的不同导致的。
你的操作系统是不是32位的?

我的是64位,两个程序都是在一台电脑上编译的

无符号整形 发表于 2018-7-28 17:04:40

洛城闻笛 发表于 2018-7-28 17:02
我的是64位,两个程序都是在一台电脑上编译的

6楼正解,你确实打错了。

洛城闻笛 发表于 2018-7-28 17:07:32

向上的蜗牛 发表于 2018-7-28 10:22
你是不是%llu打成了%11u?

确实,谢谢了,能不能帮我解释下 ll的意思呢?

向上的蜗牛 发表于 2018-7-29 09:55:20

洛城闻笛 发表于 2018-7-28 17:07
确实,谢谢了,能不能帮我解释下 ll的意思呢?

你可以去论坛里函数快查模块里看看printf函数,我也是新手{:10_254:}

洛城闻笛 发表于 2018-7-29 12:12:33

向上的蜗牛 发表于 2018-7-29 09:55
你可以去论坛里函数快查模块里看看printf函数,我也是新手

好的
页: [1]
查看完整版本: 带你学才带你飞S1E6数据类型课后习题