long int 范围不够,像这种在某个数值继续变大后突然为负的现象,为上溢出,改成long long int,再不够用double,但注意,用double后,就不再是整形,精度只能保留15为,但是大小就要高很多,再不够还可以用long double ,当然还可以用字符数组等方式存更大的数,那就需要底层的知识了,有不懂的地方可以问我
那就说明这个结果超出了你的机器上long类型数据的范围,用double来定义sum和s吧,最后的输出说明符改成%lf
因为int型上限数值是32768 超过了就成了负数了 请考虑用高精度乘法 可以把结果算到很大很大很大
数值超过了long int 的范围