fortran程序中的错误

来源:百度知道 编辑:UC知道 时间:2024/06/22 09:28:44
program found
implicit none
integer::n,sum
do n=0,63
sum=sum+2**n
print*,n,sum
end do
end program
这是源程序,想求2的n次方的和,但是到了n=30的时候就不能正常运行了,请问老师应该怎么修改?错误的原因是什么?
30以后所有的sum值均为-1.

数据溢出了,整型变量的的范围在-2^31~2^31-1,即-2147483648~2147473647之间,当计算到2的31次方时,数据大于2147473647,被自动设置为-2147483648,因此出错,将变量sum换为实型或者双精度型可解决。

代码修改为:

program found
implicit none
integer::n
real::sum
do n=0,63
sum=sum+2.0**n
print*,n,sum
end do
end program