关于阶乘用while循环写代码,结果变负数

#include<stdio.h> void main() { int i=1; long double s=1; while(i<=100) { s=i*s; i++; } printf("%d\n",s); }运行结果-7911....
用long int s=1;...
结果却是 0....
不解中...
求解...
谢...
#include<stdio.h> void main() { int i=1; long double s=1; while(i<=100) { s=i*s; i++; } printf("%d\n",s); }运行结果-7911....