己知f(n)=n!=n×(n-1)×(n-2)×…×2×1,计算f(n)的C语言函数f1的源程序(阴影部分)及其在32位计算机M上的部分机器级代码如下: 其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令,计算机M按字节编址,int型数据占32

admin2020-06-17  25

问题 己知f(n)=n!=n×(n-1)×(n-2)×…×2×1,计算f(n)的C语言函数f1的源程序(阴影部分)及其在32位计算机M上的部分机器级代码如下:
  
其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令,计算机M按字节编址,int型数据占32位。请回答下列问题:
f(13)=6227020800,但f1(13)的返回值为1932053504,为什么两者不相等?要使f1(13)能返回正确的结果,应如何修改f1的源程序?

选项

答案因为f(13)=6227020800,其结果超出了32位int型数据可表示的最大范围,因此f(13)的返回值是一个发生了溢出的错误结果。为使f1(13)能返回正确结果,可将函数f1的返回值类型改为double(或long long,或long double,或float)类型。

解析
转载请注明原文地址:https://kaotiyun.com/show/MU3i777K
0

相关试题推荐
最新回复(0)