24小时热门版块排行榜    

查看: 663  |  回复: 3

guojunhang

金虫 (正式写手)


[交流] 问一个关于函数调用的小问题

请教个问题,看看我这个函数,fortran77写的:
      FUNCTION HEAVI(PRIS)
           REAL*8 PRIS   
      IF(PRIS.GT.0.0) THEN
         HEAVI=1.0
       ENDIF
       RETURN
C
         IF(PRIS.LT.0.0) THEN
          HEAVI=0.0
        ENDIF
       RETURN
         END

调用的时候出现下列情况:
HEAVI(-3)=1.00000000000000,   
HEAVI(-3.0D0)=0.000000000000000E+000,
     HEAVI(-3.0)=1.00000000000000
HEAVI(3)=1.00000000000000,     
HEAVI(3.0D0)=1.000000000000000E+000,   
HEAVI(3.0)=1.00000000000000
不知道什么原因?

改成这样怎么就好了呢?

      Program ex005
      real HEAVI
      write(*,*) HEAVI(3.0d0)
      end

      FUNCTION HEAVI(PRIS)
       REAL PRIS
       Real HEAVI   
       IF(PRIS.GT.0.0) THEN
         HEAVI=1.0
       else
         HEAVI=0.0
       ENDIF
       RETURN
      END  
语言Fortran77,gfortran环境。
求解释。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 欢迎讨论 2011-11-11 23:31:16
guojunhang(金币+1): 这个问题我也注意到了,所以改正后了程序流程 2011-11-13 18:27:43
你第一个程序中第一个 return 直接就结束了那个函数,后面的那个条件永远不会被执行啊……
2楼2011-11-11 22:53:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)


★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与 2011-11-12 00:41:19
余泽成: 专家考核存档 2011-11-13 21:35:24
引用回帖:
1楼: Originally posted by guojunhang at 2011-11-11 21:53:59:
请教个问题,看看我这个函数,fortran77写的:
      FUNCTION HEAVI(PRIS)
           REAL*8 PRIS   
      IF(PRIS.GT.0.0) THEN
         HEAVI=1.0
       ENDIF
       RETURN
C
         IF(PRIS. ...

貌似变量定义也有问题,第一个函数中用的是real*8,主程序给的有时候是real*8 ,有时候是real*4

[ Last edited by maomao1210 on 2011-11-11 at 23:00 ]
3楼2011-11-11 22:55:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1303haojian

新虫 (初入文坛)


★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与 2011-12-12 22:29:29
jjdg(金币+1): 感谢应助 2011-12-13 00:49:52
把第一个if块中的return去掉
4楼2011-12-12 14:57:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 guojunhang 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见