24小时热门版块排行榜    

查看: 826  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

小muer

金虫 (正式写手)

[求助] 看看这个程序那里不行。。

#include
using namespace std;
int main()
{int i=1,x,n=2,sum=0;
while(n<=20)
{sum=sum+i;
i=i*n;
n++;
}
cout<<"sum="< return 0;
}
输出结果居然为负数了。。。奇了。。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小muer

金虫 (正式写手)

引用回帖:
2楼: Originally posted by libralibra at 2013-03-26 20:51:02
正数溢出了就变负数了,把sum定义为long long试试

有道理。。。

[ 发自手机版 http://muchong.com/3g ]
3楼2013-03-26 21:04:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2013-03-26 22:37:10
正数溢出了就变负数了,把sum定义为long long试试
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2013-03-26 20:51:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小muer

金虫 (正式写手)

引用回帖:
2楼: Originally posted by libralibra at 2013-03-26 20:51:02
正数溢出了就变负数了,把sum定义为long long试试

改了,可是还是不行。。而且不能long long 哦
4楼2013-03-26 21:20:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wy_eda

银虫 (初入文坛)

这个相当于在计算20!,结果肯定溢出了.改成long long可以,不仅是sum,i也要改.如果你的编译器不支持long long,或者你要计算更大的数,需要学习一下大数乘法的相关算法,例如:http://wenku.baidu.com/view/04fa8fbe960590c69ec376df.html
5楼2013-03-27 08:16:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见