求阶乘的最高位(C语言)

求阶乘的最高位(C语言),为什么图一会导致溢出,图二不会导致溢出,我这两个用的都是long double。请帮忙看一下,谢谢啦!

img

img

img

log10函数使用有问题,它的参数是double类型。如果sum超过double范围,那就丢失数据了

图1的sum是double,double的最大值和最小值分别为1.79769e+308(10308),2.22507e-308(10-308)。 它的sizeof值为8.
图2的sum是long double,1.18973e+4932 ~ 3.3621e-4932
两个取值范围就不同