Fortran Coder

查看: 237|回复: 4

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

[复制链接]

12

帖子

3

主题

0

精华

入门

F 币
70 元
贡献
39 点
发表于 2019-5-25 20:57:15 | 显示全部楼层 |阅读模式
对于Fortran里面的逻辑与运算和逻辑或运算,在判断条件较多的情况下,如果根据排列考前的条件已经可以判断出整体的真或假,后面的条件还是会继续进行判断,这样会不会比较浪费时间。
不知道Fortran是否可以在已经可以做出判断的前提下,跳过后续条件的判断???
回复

使用道具 举报

738

帖子

0

主题

0

精华

宗师

F 币
874 元
贡献
485 点

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

QQ
发表于 2019-5-25 21:07:23 | 显示全部楼层
本帖最后由 vvt 于 2019-5-25 21:10 编辑

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

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

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

12

帖子

3

主题

0

精华

入门

F 币
70 元
贡献
39 点
 楼主| 发表于 2019-5-25 21:17:17 | 显示全部楼层
是的,今天就遇到了你描述的这个问题,再请教一下,我使用的是IVF编译器,他对这个有优化吗?

738

帖子

0

主题

0

精华

宗师

F 币
874 元
贡献
485 点

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

QQ
发表于 2019-5-25 21:43:22 | 显示全部楼层
你可以自己开优化
默认情况下 Debug 是无优化,Release是二级优化。

12

帖子

3

主题

0

精华

入门

F 币
70 元
贡献
39 点
 楼主| 发表于 2019-5-25 22:23:12 | 显示全部楼层
好的,谢谢,我试下
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-11-20 14:41

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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