有没有一种方法可以捕获整数异常,gfortran
或者ifort
像捕获浮点异常一样?
考虑这个简单的程序来计算阶乘:
program factorial
use, intrinsic :: iso_fortran_env
implicit none
integer(8) :: fac
real(REAL64) :: facR
integer,parameter :: maxOrder = 30
integer :: i
fac = 1 ; facR = 1.e0_REAL64
do i=2,maxOrder
fac=fac*i ; facR=facR*real(i,REAL64)
write(*,*) i, fac, facR
enddo ! i
end program
在某些时候会有溢出 -integer(8)
因为如图所示,它会在 21 左右发生。但如果没有使用浮点数作为参考的计算,我无法确定......