Ale*_*o B 5 fortran if-statement where conditional-statements
我们都知道DO
循环比FORALL
Fortran中的语句更强大.也就是说,您总是可以用a代替,而不是FORALL
用a 代替DO
.
怎么样的WHERE
陈述和块?
我可以一直替换IF
一个WHERE
吗?是否总是可以用a编码条件和分叉WHERE
,从而避免IF
?
WHERE
语句保留给数组赋值而不保留,例如:
INTEGER, DIMENSION(100,100) :: a, b
... define a ...
WHERE(a < 0)
b = 1
ELSEWHERE
b = 0
ENDWHERE
Run Code Online (Sandbox Code Playgroud)
如果您尝试在块中添加某些内容(例如WRITE
语句),WHERE
您会看到类似于以下编译错误(依赖于编译器)的内容:
Error: Unexpected WRITE statement in WHERE block at (1)
Run Code Online (Sandbox Code Playgroud)
编辑
请注意,嵌套WHERE
块是合法的:
WHERE(a < 0)
WHERE( ABS(a) > 2)
b = 2
ELSEWHERE
b = 1
ENDWHERE
ELSEWHERE
b = 0
ENDWHERE
Run Code Online (Sandbox Code Playgroud)