2013-10-19 56 views
0

我需要知道,我的溢出算法有什麼問題?在Fortran中,我必須執行一種算法,以在返回溢出中斷時返回增量「n」的數量。Fortran溢出算法

program overflow 

    integer::n,i,fact; 

    fact = 1; 
    n = 50; 

    do i=1,n,1 
    fact=fact*i; 
    if ((fact==abs(fact)).and.(fact /= 0)) then 
     print*,"F!=",fact; 
     n=n+1; 
     !print*,"Overflow=",n; 
    end if; 
    end do; 

    print*,n; 

end program overflow 

它包含負值,而「突變」的階乘之前到達,意思是「溢出」的數量,但它是假的,正應該是15

+2

可能重複的[在Fortran中捕獲整數異常](http://stackoverflow.com/questions/18881865/catch-integer-exceptions-in-fortran) –

+0

有趣的是,我們知道你不能*計數溢出會否定的,但是它不應該在它的時候捕獲它嗎? – agentp

回答

0

我從來就不是一個Fortran的程序員,但也許你的回報值應該是雙倍的。