主题:关于forall的一个程序,想不通
在Fortran95上看了一个程序,关于forall的,如下:
program ex0714
implicit none
integer I,J
integer, parameter :: size = 5
integer :: a(size,size)
forall ( I=1:size, J=1:size, I>J ) a(I,J)=1 ! 上半部分
forall ( I=1:size, J=1:size, I==J ) a(I,J)=2 ! 对角线部分
forall ( I=1:size, J=1:size, I<J ) a(I,J)=3 ! 下半部分
open (111,file="e:\ex0714.txt")
write(111,"(5(5I5,/))") a
stop
end
输出结果为:
2 1 1 1 1
3 2 1 1 1
3 3 2 1 1
3 3 3 2 1
3 3 3 3 2
请教:对forall循环的部分,i、j到底是如何循环的?貌似跟一般数组的赋值不一样。想不明白。请高手指点。
program ex0714
implicit none
integer I,J
integer, parameter :: size = 5
integer :: a(size,size)
forall ( I=1:size, J=1:size, I>J ) a(I,J)=1 ! 上半部分
forall ( I=1:size, J=1:size, I==J ) a(I,J)=2 ! 对角线部分
forall ( I=1:size, J=1:size, I<J ) a(I,J)=3 ! 下半部分
open (111,file="e:\ex0714.txt")
write(111,"(5(5I5,/))") a
stop
end
输出结果为:
2 1 1 1 1
3 2 1 1 1
3 3 2 1 1
3 3 3 2 1
3 3 3 3 2
请教:对forall循环的部分,i、j到底是如何循环的?貌似跟一般数组的赋值不一样。想不明白。请高手指点。