DDOT=DTEMP
// DOUBLE PRECISION相当于 C语言的 double
相当于 C语言的
double result=DTEMP;
。。。。。。。
return result;//函数返回时才执行,平常DDOT这样的函数名,代表函数返回值而已。
并不表示函数返回。
只有递归调用,和函数调用,和用函数作为参数时,函数声明和定义时才是一个函数!
其他时候在函数内部,就直接相当于函数返回值!!!
在调用函数的表达式中整个函数调用才相当于函数返回值!!!
有点绕!!!
DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY)
INTEGER INCX,INCY,N
DOUBLE PRECISION DX(*),DY(*)
DOUBLE PRECISION DTEMP
DTEMP = 0.0d0
!-------------------------------------------------------------------------------------------
DDOT=DTEMP 函数结束,函数返回值不变了,此时和C语言的 return DTEMP是一样的。
end function
!---------------------------------------------
如果在赋值处,函数结束,和C语言的 return DTEMP是一样的。
如又重新赋值,
DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY)
INTEGER INCX,INCY,N
DOUBLE PRECISION DX(*),DY(*)
DOUBLE PRECISION DTEMP
DTEMP = 0.0d0
DDOT=DTEMP !函数返回值暂时是DTEMP,也就是 0.0d0双精度0
。。。。。
DDOT=DTEMP+200 !现在是函数返回值200了!
end function ! 函数结束,函数返回值就是200了这两条语句联手,
!相当于return DTEMP+200 ;
DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY)
INTEGER INCX,INCY,N
DOUBLE PRECISION DX(*),DY(*)
DOUBLE PRECISION DTEMP
DTEMP = 0.0d0
DDOT=DTEMP
首先,如果你贴出来的代码是完整的,那么这个程序没有什么意义,就是直接得出一个常函数DDOT=0,也就是无论输入什么参数,函数返回值DDOT都为0。
感觉你贴的代码不完整...
后面肯定还有对于DDOT运算或者赋值的。
FORTRAN子程序包括子例程和函数,子例程的返回参数在括号里面,和输入参数一起传入,函数的返回值就是函数名,所以函数中一定要给函数名(返回值)赋值