C++中对与溢出是怎么处理的啊

霍大脚 2007-12-28 05:19:47
这个程序的溢出怎么出处理(说明,对与大N,求出结果不对,20的时候不对)

#include<iostream>
using namespace std;
const int N=20;
void main()
{
int i;
long sum;
for(sum=N,i=N-1;i>=1;i--)
sum=(sum+1)*i;
cout<<sum<<endl;
}
...全文
428 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
霍大脚 2007-12-28
  • 打赏
  • 举报
回复
看不出来你这是求阶乘的
===================================
看来你要认真看下了啊......
llph2 2007-12-28
  • 打赏
  • 举报
回复
这个方法的优点是溢出值很大```溢出的可能性比较小``
但需要的内存方面就有额外的开支了
llph2 2007-12-28
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
struct a
{

int i : 10;//这里的值可以设大点

}sum;
const int N=20;
void main()
{
int i;
long sum;
for(sum=N,i=N-1;i>=1;i--)
sum=(sum+1)*i;
cout<<sum<<endl;
}


ttkk_2007 2007-12-28
  • 打赏
  • 举报
回复
看不出来你这是求阶乘的
silencezhujianhua 2007-12-28
  • 打赏
  • 举报
回复
这些和你定义的值的范围有关
可能当你使用末一个的时候他超出了定义的范围他就回溢出
zhshgao 2007-12-28
  • 打赏
  • 举报
回复
最简单就是自己估计最大值,选用相应的数据类型。阶乘很容易就会超出表达范围。你用long long会比现在大一点。
再大只能自己写一个类来表示。
霍大脚 2007-12-28
  • 打赏
  • 举报
回复
就是说怎么解决溢出问题啊
sheenl 2007-12-28
  • 打赏
  • 举报
回复
自己判断溢出好了, C++好像不会帮你处理的.
真要大数阶乘, long也太小了.
霍大脚 2007-12-28
  • 打赏
  • 举报
回复
求阶层之和的

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧