Mat*_*ric 5 debugging fortran if-statement segmentation-fault
假设我有以下代码
IF (a.eq.0.or.M(a)) THEN
Run Code Online (Sandbox Code Playgroud)
使用整数和M(1:3)逻辑数组.如果a等于0,那么我希望第一个测试能够捕获它而第二个测试永远不会被评估.但是,如果我使用intel fortran编译器并编译
-check all
Run Code Online (Sandbox Code Playgroud)
然后我遇到了分段错误.没有此调试选项,不会发生错误.这是标准行为吗?对于许多语言,在手册中明确说明了
IF (A.or.B) THEN
Run Code Online (Sandbox Code Playgroud)
如果A为真,则不评估B. Fortran标准是否明确要求即使不影响最终结果也可以评估A和B?
Ken*_*nde 14
Fortran允许但不保证逻辑运算符的短路评估.因此,为了安全起见,您必须在假设每个操作数被评估的情况下编写代码.