因为int最大表示2^31-1,也就是2147483647(21亿)。但是12!是4亿多,13!是62亿多。20!有19位
你用z(int)来存放每个数的阶乘,到了13!之后就出错了,z就不是正确的阶乘结果。导致你的sum出错。
你可以把所有变量全用long long int,这个在64位机上可以表示8个字节,可以达到19位,刚好可以记录20!,不可以记录21!