问答题

已知 f(n)=n!=n×(n-l)×(n-2)×…×2×1,计算 f(n)的 C 语言函数 fl 的源程序(阴影部分)及其在 32 位计算机 M 上的部分机器级代码如下:

其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令,计算机 M 按字节编址,int 型数据占 32 位。请回答下列问题:

f(13)=6 227 020 800,但 f1(13)的返回值为 1 932 053 504,为什么两者不相等?要使 f1(13)能返回正 确的结果,应如何修改 f1 源程序?

【参考答案】

因为 f(13) = 6227020800,其结果超出了 32 位 int 型数据可表示的最大范围,因此 f(13)的返......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)