Fortran Coder

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

[流程控制] 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),而没有开优化,则会出错(数组越界)

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

QQ
沙发
发表于 2019-5-25 21:43:22 | 显示全部楼层
你可以自己开优化
默认情况下 Debug 是无优化,Release是二级优化。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-8 08:35

Powered by Tencent X3.4

© 2013-2024 Tencent

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