为什么当输入超过12的时候都没有正确结果,如何修改程序?

#include<stdio.h>
int main()
{
int i,fac,n;
printf("n=",n);
scanf("%d",&n);
fac=1;
for(i=1;i<=n;i++)
{
fac*=i;
}
printf("%d",fac);
return 0;
}

考虑是不是结果已经超过int的范围了。
可以尝试使用long类型