C语言 帮我看一下这个程序为什么结果总是输出0

2025-02-06 01:05:54
推荐回答(5个)
回答1:

你要求的是2^1+2^2+2^3+。。。+2^16。前面2的几次方的时候值比较小,int类型的term还能装的下;后面的数越来越大,不仅超出了int类型的term最大长度,还超出了long类型的sum的最大长度。因此输出的是无符号long类型的最小值0。

        解决办法是:把term和sum设为double类型,后面用浮点类型格式(长度满足要求)输出(“%f",sum)。

回答2:

数据溢出后隐式转换导致输出是0,不同编译器对数据类型的长度定义不一样,你可以用sizeof(int)看一下你的编译器给的int是几个字节。

回答3:

你term没初值,C语言默认是0,也就是说,你的term=term*2,始终得到的term还是0;
sum也是0,因此结果始终是0;
你在long sum=0语句前面加上一句 term=1;结果就对了;

回答4:

因为 return 0;所以就、、、

回答5:

我不认为上面输出结果为0