Ale*_*o B 5 fortran if-statement where conditional-statements
我们都知道DO循环比FORALLFortran中的语句更强大.也就是说,您总是可以用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)
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |