有谁可以帮我解决一下??
#include <stdio.h>void main()
{float sum=0,p,i,j;
for(i=1;i<=20;i++)
{for(j=1,p=1;j<=i;j++)
p=p*j;
sum=sum+p;}
printf("1!+2!+3!+4!+……+20!=%e\n",sum);}
这个程序是正确的!但是当我把数值类型float改为long int ,%e改为%ld时,虽然结果肯定错误,但系统却冷静地给了我一个答案,而且如果你事先不算一下结果,还以为答案正确呢!!为什么结果大大超出容许范围,系统却如此处置???我用的是VC++6.0