如下所示,,这样输入13,为什么结果是-1839957479呢,输入12会得到522956313,输入比13小的数都得到了正数
#include<stdio.h>
int main(){
int i,n;
int a = 1;
int c = 0;
scanf("%d",&n);
for(i =1;i <= n;i++)
{
a = a*i;
c = c+a;
}
printf("%d",c);
return 0;
}
如下所示,,这样输入13,为什么结果是-1839957479呢,输入12会得到522956313,输入比13小的数都得到了正数
#include<stdio.h>
int main(){
int i,n;
int a = 1;
int c = 0;
scanf("%d",&n);
for(i =1;i <= n;i++)
{
a = a*i;
c = c+a;
}
printf("%d",c);
return 0;
}
int类型4个字节,最大2,147,483,647,超过就是负数,
int64_t类型最大9223372036854775807,需要#include <stdint.h>
再大用double或者自己写大数乘法