Fortran Coder

查看: 5993|回复: 4
打印 上一主题 下一主题

[流程控制] Fortran逻辑运算顺序

[复制链接]

19

帖子

5

主题

0

精华

入门

F 币
110 元
贡献
61 点
跳转到指定楼层
楼主
发表于 2019-5-25 20:57:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于Fortran里面的逻辑与运算和逻辑或运算,在判断条件较多的情况下,如果根据排列考前的条件已经可以判断出整体的真或假,后面的条件还是会继续进行判断,这样会不会比较浪费时间。
不知道Fortran是否可以在已经可以做出判断的前提下,跳过后续条件的判断???
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2019-5-25 21:07:23 | 只看该作者
本帖最后由 vvt 于 2019-5-25 21:10 编辑

这个语法没有规定,由各编译器实现去决定。
某些编译器,可能开了优化会跳过,不开不会。(不一定)

所以曾经有类似这样的代码
if( funcA() .or. funcB() ) then

但是 funcA 已经返回 true 了,而 funcB 里面有错误(比如数组越界)
一些编译器开了优化可以顺利执行(跳过了 funcB),而没有开优化,则会出错(数组越界)

19

帖子

5

主题

0

精华

入门

F 币
110 元
贡献
61 点
板凳
 楼主| 发表于 2019-5-25 21:17:17 | 只看该作者
是的,今天就遇到了你描述的这个问题,再请教一下,我使用的是IVF编译器,他对这个有优化吗?

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
地板
发表于 2019-5-25 21:43:22 | 只看该作者
你可以自己开优化
默认情况下 Debug 是无优化,Release是二级优化。

19

帖子

5

主题

0

精华

入门

F 币
110 元
贡献
61 点
5#
 楼主| 发表于 2019-5-25 22:23:12 | 只看该作者
好的,谢谢,我试下
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 10:09

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表