新手求助。。。一个溢出的问题。。
c语言用循环语句 1!-2!3!-4!5!-6!7!-8!9!-10!
我想知道这个怎样去考虑数据的溢出。。。
#include<stdio.h>
void main()
{
int i,s,n,sum;
for(s=1;s<=10;s++)
{
for(i=1;i<=s;i++)
n*=i;
if(s%2==0)
n=-n;
sum+=n;
}
printf("%d\n",sum);
}
[解决办法]
在你不确定计算结果的情况下只能估算一下再声明一个数据类型合适的变量,要是实在没法估计的话就用long long
另外你的n没赋初值
[解决办法]
int的取值范围应该是-2147483648 ~ +2147483647 ,这样的话,你这个程序有可能溢出,当然我只是看着估计的,一般情况下,溢出不是什么我们想要的事,如果感觉可能会溢出,那就避免一下,把int改为long int,不用考虑太多。
[解决办法]
#include<stdio.h>
void main()
{
int i,s,n,sum;
for(s=1;s<=10;s++)
{
for(i=1;i<=s;i++)
n*=i; // n没有初始化
if(s%2==0)
n=-n;
sum+=n;
}
printf("%d\n",sum);
}