返回信息流vc中计算阶乘的程序,如下。我单步调试过没有问题,就m大于12后显示的值与实际的值有偏差,不解?
long m,n = 1 ;
unsigned long sum = 1 ;
m = 20 ;//发现大于12就有问题了
//=====
if(m>1)
{
while(n<=m)
{
sum=sum*n;
n++;
}
}
请大家帮忙看看,。。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #39887同步于 2010/5/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
VC中N阶乘精度的问题?(大于12!就出问题)
hero06
2010/5/31镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
溢出
13! > 2^32
unsigned long放不下了
【 在 hero06 (飞哥) 的大作中提到: 】
: vc中计算阶乘的程序,如下。我单步调试过没有问题,就m大于12后显示的值与实际的值有偏差,不解?
: long m,n = 1 ;
: unsigned long sum = 1 ;
: ...................
VC中 int是16位的,long是64位的。怎么会溢出呢?
MSDN: For long, from -9223372036854775808 to 9223372036854775807, inclusive
32位機器上
int 32位
long 32位~
【 在 hero06 的大作中提到: 】
: VC中 int是16位的,long是64位的。怎么会溢出呢?
: MSDN: For long, from -9223372036854775808 to 9223372036854775807, inclusive