Fortran Coder

标题: Fortran逻辑运算顺序 [打印本页]

作者: SongAngel    时间: 2019-5-25 20:57
标题: Fortran逻辑运算顺序
对于Fortran里面的逻辑与运算和逻辑或运算,在判断条件较多的情况下,如果根据排列考前的条件已经可以判断出整体的真或假,后面的条件还是会继续进行判断,这样会不会比较浪费时间。
不知道Fortran是否可以在已经可以做出判断的前提下,跳过后续条件的判断???

作者: vvt    时间: 2019-5-25 21:07
本帖最后由 vvt 于 2019-5-25 21:10 编辑

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

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

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

作者: SongAngel    时间: 2019-5-25 21:17
是的,今天就遇到了你描述的这个问题,再请教一下,我使用的是IVF编译器,他对这个有优化吗?
作者: vvt    时间: 2019-5-25 21:43
你可以自己开优化
默认情况下 Debug 是无优化,Release是二级优化。
作者: SongAngel    时间: 2019-5-25 22:23
好的,谢谢,我试下




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2